![](/img/trans.png)
[英]How can I dynamically display Total number of items from the Database in a blade view in Laravel 7
[英]How can I display total number of items using count function in a menu layout file in Laravel 7?
我正在使用 Laravel 7 來制作我的應用程序,在 mySQL 數據庫中,我有一個名為“projects”的表,其中有一列名為“status”。 狀態只是我的 Model 中的常量(狀態 1、2、3 等)我想在儀表板的菜單中顯示每個狀態的項目計數。 我怎樣才能做到這一點? 我曾嘗試使用 Controller,但出現錯誤。 我的視圖文件實際上是一個布局文件,所以我確定問題出在哪里。 我在Laravel不是很有經驗。請幫忙。
在我的 Controller 中:
class MenuItemsCountController extends Controller
{
public function getProjectCount()
{
$project = Project::where('status','=','1')->count();
return view('client_panel.layouts.menu',compact('project'));
}
}
我的布局文件:
<li class="side-menus nav-item dropdown amos-client-menu">
<a href="#" class="nav-link has-dropdown"><i class="fas fa-folder-open"></i>
<span>Job Cards</span></a>
<ul class="dropdown-menu side-menus">
<li class="side-menus {{ Request::is('client/new-jobcard') ? 'active' : '' }}">
<a class="nav-link" href="{{ route('client.new-jobcard.index') }}">
<i class="far fa-address-card" aria-hidden="true"></i><span>New</span>
<span class="amos-badge">{{count($project)}}</span>
</a>
</li>
<li class="side-menus {{ Request::is('client/potential-jobcard') ? 'active' : '' }}">
<a class="nav-link" href="{{ route('client.potential-jobcard.index') }}">
<i class="far fa-address-card" aria-hidden="true"></i><span>Potential</span>
<span class="amos-badge">18</span>
</a>
</li>
<li class="side-menus {{ Request::is('client/progress-jobcard') ? 'active' : '' }}">
<a class="nav-link" href="{{ route('client.progress-jobcard.index') }}">
<i class="far fa-address-card" aria-hidden="true"></i><span>In Progress</span>
<span class="amos-badge">18</span>
</a>
</li>
<li class="side-menus {{ Request::is('client/complete-jobcard') ? 'active' : '' }}">
<a class="nav-link" href="{{ route('client.complete-jobcard.index') }}">
<i class="far fa-address-card" aria-hidden="true"></i><span>Completed</span>
<span class="amos-badge">18</span>
</a>
</li>
</ul>
</li>
在我的 Model 中:
const STATUS_NEW = 1;
const STATUS_FINISHED = 2;
const STATUS_ONGOING = 3;
const STATUS_POTENTIAL = 4;
我使用過 View Composer,它運行良好。 在我的 AppServiceProvider 文件中,我在 boot() 方法中添加了這段代碼:
public function boot()
{
View::composer('client_panel.layouts.menu', function ($view) {
$view->with('newprojects', Project::where([
['status','=','1'],
['created_by','=',Auth::user()->id]
])->count());
});
}
然后在刀片文件中我使用了這樣的變量:
<span class="badge badge-primary">{{$newprojects}}</span>
試試這個
$project = Project::selectRaw("project_name,count(*) as total")
->groupBy('status')
->get();
在 controller map 狀態下路由如下
public function getProjectCount()
{
$project = Project::selectRaw("project_name,count(*) as total")
->groupBy('status')
->get();
$routing=[
1=>route('client.new-jobcard.index'),
2=>route('client.potential-jobcard.index')
];
return view('client_panel.layouts.menu',compact('project','routing'));
}
還要確保在 database.php 中為 mysql 連接設置'strict' => false,
在視圖中,您可以循環 li 元素。但是對於路由,您可以根據狀態定義有條件的設置
@foreach($project as $key=>$value)
<li class="side-menus ">
<a class="nav-link" href="{{ isset($routing[$value->status])?$routing[$value->status]:"#" }}">
<i class="far fa-address-card" aria-hidden="true"></i><span>{{$value->project_name}}</span>
<span class="amos-badge">{{$value->total}}</span>
</a>
</li>
@endforeach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.