这是一些排序:
怎么做?
继承我现在的代码(哪个工作,但我不想使用SORTBY)由于某种原因,sortby不适用于其他项目。如果可能的话,我希望它像一个雄辩的查询:
$this->data['today_post'] = Posts::orderBy('views', 'desc')->whereRaw('created_at >= NOW() - INTERVAL 1 DAY')->limit(20)->get();
$this->data['today_post'] = $this->data['today_post']->sortByDesc('created_at');
此代码不起作用,因为LIMIT通常作为最后一个操作应用,因此结果将首先按“views”和“created_at”排序,然后限制为20.我不希望这样。我希望在完成之后对其进行排序和限制。我想最后再次排序。
$this->data['today_post'] = Posts::orderBy('views', 'desc')->orderBy('created_at', 'desc')->whereRaw('created_at >= NOW() - INTERVAL 1 DAY')->limit(20)->get();
非常感谢
答案 0 :(得分:1)
如果您想使用Eloquent,您仍需要使用sortBy()
或sortByDesc()
。我刚刚测试了这个解决方案,它运行得很好:
Posts::orderBy('views', 'desc')
->where('created_at', '>=', Carbon::now()->subDay())
->take(20)
->get()
->sortByDesc('created_at');