簡體   English   中英

拉拉維爾。 如何按一個字段排序但首先獲取具有另一個字段特定值的項目?

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

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