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)
{{$article->title}} |
{{$article->created_at}} |
{{$article->status}} |
詳情 編輯 |
@endforeach
@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)
{{$article->title}} |
{{$article->created_at}} |
{{$article->status}} |
詳情 編輯 |
@endforeach
@else 沒有文章
@endif
可是,這些文章分為兩類:
一類是“發行”,資料庫欄位status,值為“1”,
一類是“未發布”,資料庫欄位status,值為“0”,
問題:
現在需要這兩類文章分開顯示,發行的顯示在一個card中,未發布的顯示在一個card中,可以在模板中直接分類嗎?這樣的話就不用查兩次資料庫。
只很容易,$articles 已經是 collections ,所以透過 where 即可過濾..
如下:
發行
發行-所有文章 @if ($articles!=null)
標題 |
發布時間 |
發布狀態 |
操作 |
@foreach ($articles->where('status', 1) as $article)
{{$article->title}} |
{{$article->created_at}} |
{{$article->status}} |
詳情 編輯 |
@endforeach
@else 沒有發行文章
@endif
未發布
未發布-所有文章 @if ($articles!=null)
標題 |
發布時間 |
發布狀態 |
操作 |
@foreach ($articles->where('status', 0) as $article)
{{$article->title}} |
{{$article->created_at}} |
{{$article->status}} |
詳情 編輯 |
@endforeach
@else 沒有未發布文章
@endif
可以在模板裡面進行兩次迴圈,每次使用if判斷,Card A中只有狀態是發行才顯示。
$articles = $user->articles;
才是查資料庫的操作,模版中foreach只是對這個資料進行迴圈,不會查資料庫