Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel 5.1中获得每个模型中元素数量的优雅方法_Php_Oop_Laravel 5.1 - Fatal编程技术网

Php 在laravel 5.1中获得每个模型中元素数量的优雅方法

Php 在laravel 5.1中获得每个模型中元素数量的优雅方法,php,oop,laravel-5.1,Php,Oop,Laravel 5.1,在每个菜单项中,我需要显示其中包含的项目数。例如: Users (22) Posts (57) Categories (14) Cities (92) 试图做这样的事情: App/View/Composers/AddCountOfModels.php: App/Providers/AppServiceProvider.php: menu.blade.php: @扩展(“u layouts.backend”) @节(“菜单”) 菜单 用户({{{$count\u of['Users']}) P

在每个菜单项中,我需要显示其中包含的项目数。例如:

Users (22)
Posts (57)
Categories (14)
Cities (92)
试图做这样的事情:

App/View/Composers/AddCountOfModels.php:

App/Providers/AppServiceProvider.php:

menu.blade.php:

@扩展(“u layouts.backend”)
@节(“菜单”)
    菜单
  • 用户({{{$count\u of['Users']})
  • Posts({{{$count\u of['Posts']}})
  • 类别({{{$count\u of['Categories']})
  • 城市({{$count\u of['Cities']})
@端部
但它看起来很笨拙,因为模型可以做得更多

请帮我找到一个更漂亮的解决方案。

我不确定我是否完全理解你,但我会试试看

// in controller
// change with your models location
$model_files = \File::allFiles('../app/models'); 

foreach($model_files as $model_file)
{
    $pos = strrpos($model_file->getRelativePathname(), ".");
    // add your path
    $models[] = 'App\Models\\'.substr($model_file->getRelativePathname(), 0, $pos);
}   

return view('layouts.app')->with(compact('models'));

// in view      
<ul class="sidebar-menu">
    <li class="header">Menu</li>
    @foreach($models as $model)
        <li class="menu-item">{{ $model }} ({{ $model::count() }})</li>
    @endforeach
</ul>
//在控制器中
//根据您的模型位置进行更改
$model_files=\File::allFiles('../app/models');
foreach($model\u文件作为$model\u文件)
{
$pos=strrpos($model_file->getRelativePathname(),“);
//添加您的路径
$models[]=“App\models\\\”.substr($model\u file->getRelativePathname(),0,$pos);
}   
返回视图('layouts.app')->带有(紧凑型('models');
//鉴于
    菜单 @foreach($models作为$model)
  • {{$model}}({{$model::count()}})
  • @endforeach

我不完全理解您想要做什么?我需要将每个模型中包含的行数传递到menu.blade.php
namespace App\Providers;

use App\View\Composers;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
  public function boot()
  {
    $this->app['view']->composer('_layouts.backend', Composers\AddCountOfModels::class);
  }
}
...
@extends('_layouts.backend')

@section('menu')
<ul class="sidebar-menu">
  <li class="header">Menu</li>
  <li class="menu-item">Users ({{ $count_of['users'] }})</li>
  <li class="menu-item">Posts ({{ $count_of['posts'] }})</li>
  <li class="menu-item">Categories ({{ $count_of['categories'] }})</li>
  <li class="menu-item">Cities ({{ $count_of['cities'] }})</li>
</ul>
@endsection
// in controller
// change with your models location
$model_files = \File::allFiles('../app/models'); 

foreach($model_files as $model_file)
{
    $pos = strrpos($model_file->getRelativePathname(), ".");
    // add your path
    $models[] = 'App\Models\\'.substr($model_file->getRelativePathname(), 0, $pos);
}   

return view('layouts.app')->with(compact('models'));

// in view      
<ul class="sidebar-menu">
    <li class="header">Menu</li>
    @foreach($models as $model)
        <li class="menu-item">{{ $model }} ({{ $model::count() }})</li>
    @endforeach
</ul>