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

Mic*_*ael 6 php laravel eloquent

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

shu*_*van 5

以下构建state=0首先显示,然后按日期降序排列。您可以致电->get()->paginate()

$builder = Model::where('something', '>', 'value')
    ->orderByRaw("IF(`state` = 0, 1, 0)  DESC")
    ->orderBy('date', 'DESC');

return $builder->paginate(15);
Run Code Online (Sandbox Code Playgroud)

要按 排序第一个,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");
Run Code Online (Sandbox Code Playgroud)

我只是将订购分为 3 个不同的条件。