两个顺序通过在Laravel中排序

时间:2019-02-12 15:11:58

标签: laravel sorting

如果索引代码如下,如何修改以获得正确的排序结果?

是查看渲染问题,而不是在后端排序吗?

$jobs = DB::table('jobs')
           ->where('user_id', $user_id)
           ->whereMonth('created_at', date('m'))
           ->orwhere(function ($query) use ($user_id) {
               $query->where('user_id', $user_id)
                   ->whereMonth('deleted_at', date('m'));
           })
           ->orderBy('is_running', 1)
           ->orderBy('created_at', 'desc');

预期结果是

  1. is_running必须位于顶部
  2. 其他记录在顶行之后的位置。

     created_at | is_running
     12.Feb.19  |    1
     13.Feb.19  |    0
     11.feb.19  |    0
     10.feb.19  |    0
     09.feb.19  |    0
         *      |    0
         *      |    0
    

1 个答案:

答案 0 :(得分:0)

几乎不需要任何更改。

orderBy期望列为直接排序。因此,将->orderBy('is_running', 1)更改为->orderBy('is_running', desc)。这将最大的放在顶部。

$jobs = DB::table('jobs')
           ->where('user_id', $user_id)
           ->whereMonth('created_at', date('m'))
           ->orwhere(function ($query) use ($user_id) {
               $query->where('user_id', $user_id)
                   ->whereMonth('deleted_at', date('m'));
           })
           ->orderBy('is_running', desc)
           ->orderBy('created_at', 'desc');