laravel輸出變數到模板,變數在模板中再分一次類可以嗎?這樣可以只查詢一次資料庫

來源:互聯網
上載者:User
關鍵字 php laravel
laravel輸出變數到模板,變數在模板中再分一次類可以嗎?這樣可以只查詢一次資料庫。
比如:
下面是一個使用者的後台首頁控制器,返回該使用者發表的所有文章,像這樣:

    public function index()    {        $user=\Auth::user();        $articles = $user->articles;                return view('user.dashboard.index',  compact('articles'));    }

下面的代碼是在view中顯示所有文章:

            所有文章        @if ($articles!=null)    
  
     @foreach ($articles as $article) 
     @endforeach 
   
標題 發布時間 發布狀態 操作
{{$article->title}} {{$article->created_at}} {{$article->status}} 詳情 編輯
@else

沒有文章

@endif

可是,這些文章分為兩類:
一類是“發行”,資料庫欄位status,值為“1”,
一類是“未發布”,資料庫欄位status,值為“0”,

問題:
現在需要這兩類文章分開顯示,發行的顯示在一個card中,未發布的顯示在一個card中,可以在模板中直接分類嗎?這樣的話就不用查兩次資料庫。

回複內容:

laravel輸出變數到模板,變數在模板中再分一次類可以嗎?這樣可以只查詢一次資料庫。
比如:
下面是一個使用者的後台首頁控制器,返回該使用者發表的所有文章,像這樣:

    public function index()    {        $user=\Auth::user();        $articles = $user->articles;                return view('user.dashboard.index',  compact('articles'));    }

下面的代碼是在view中顯示所有文章:

            所有文章        @if ($articles!=null)    
  
     @foreach ($articles as $article) 
     @endforeach 
   
標題 發布時間 發布狀態 操作
{{$article->title}} {{$article->created_at}} {{$article->status}} 詳情 編輯
@else

沒有文章

@endif

可是,這些文章分為兩類:
一類是“發行”,資料庫欄位status,值為“1”,
一類是“未發布”,資料庫欄位status,值為“0”,

問題:
現在需要這兩類文章分開顯示,發行的顯示在一個card中,未發布的顯示在一個card中,可以在模板中直接分類嗎?這樣的話就不用查兩次資料庫。

只很容易,$articles 已經是 collections ,所以透過 where 即可過濾..
如下:

發行

            發行-所有文章        @if ($articles!=null)    
  
     @foreach ($articles->where('status', 1) as $article) 
     @endforeach 
   
標題 發布時間 發布狀態 操作
{{$article->title}} {{$article->created_at}} {{$article->status}} 詳情 編輯
@else

沒有發行文章

@endif

未發布

            未發布-所有文章        @if ($articles!=null)    
  
     @foreach ($articles->where('status', 0) as $article) 
     @endforeach 
   
標題 發布時間 發布狀態 操作
{{$article->title}} {{$article->created_at}} {{$article->status}} 詳情 編輯
@else

沒有未發布文章

@endif

可以在模板裡面進行兩次迴圈,每次使用if判斷,Card A中只有狀態是發行才顯示。

$articles = $user->articles; 才是查資料庫的操作,模版中foreach只是對這個資料進行迴圈,不會查資料庫

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.