[英]Laravel. How to order by one field but first get items with specific value of another field?
我有一個包含條目的數據庫。 每個條目都有開始日期和狀態字段。 我想要做的是按開始日期排序條目(完成),但首先顯示狀態為 0 的條目,然后顯示其他條目(也按開始日期排序)我也在對數據進行分頁。 現在按日期和分頁排序很容易做到,但不知道如何做其他事情。
以下構建首先顯示state=0
,然后按日期降序排列。 您可以調用->get()
或->paginate()
。
$builder = Model::where('something', '>', 'value')
->orderByRaw("IF(`state` = 0, 1, 0) DESC")
->orderBy('date', 'DESC');
return $builder->paginate(15);
要按date ASC
訂購第一個,然后按date DESC
訂購其他的:
$builder = Model::where('something', '>', 'value')
->orderByRaw("IF(`state` = 0, 1, 0) DESC")
->orderByRaw("IF(`state` = 0, date, 1) ASC")
->orderByRaw("IF(`state` = 0, 1, date) DESC");
我只是將訂購分成 3 個不同的條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.