Laravel。如何按一个字段排序,但首先获取具有另一个字段的特定值的项目?

时间:2017-02-08 22:29:40

标签: php laravel eloquent

我有一个带条目的数据库。每个条目都有开始日期和州字段。我想要做的是按开始日期(完成)订单输入,但首先显示状态为0然后是其他(也按开始日期排序)的那些,我也分页数据。现在按日期和分页排序很容易,但不知道如何做其他事情。

1 个答案:

答案 0 :(得分:2)

以下版本首先显示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");

我只是将订购分为三种不同的条件。