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['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>