为什么Laravel联合查询如果使用了distinct会修改顺序?

时间:2019-06-02 06:57:21

标签: laravel laravel-5 distinct

我有以下查询:

$recentTasks = Task::where('assigned_to','=',$user->id)->join('task_comments','task_comments.task_id','=','tasks.id')->orderBy('task_comments.updated_at','DESC')->select('tasks.*')->limit(10)->get();

我需要的是最近发表评论的任务列表。因此,我加入了评论表并按其排序。它有效,最近评论的任务位于顶部。但是它有重复项,因此一项任务可以出现多次。 如果我插入-> distinct()或-> distinct('tasks.id'),则重复项消失了,但按顺序排序是错误的。

如何保留排序顺序,但删除重复项?

1 个答案:

答案 0 :(得分:0)

没关系。 我已经通过使用集合中的unique解决了这个问题:

$recentTasks = Task::where('assigned_to','=',$user->id)->join('task_comments','task_comments.task_id','=','tasks.id')->orderBy('task_comments.updated_at','DESC')->select('tasks.*')->get()->unique('id')->slice(0,10);