簡體   English   中英

如何在 Laravel 7 的菜單布局文件中使用計數 function 顯示項目總數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM