为什么 Laravel 联接查询在使用非重复时修改顺序



我有以下查询:

$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'(,那么重复项就消失了,但按顺序排序是错误的。

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

关系。我已经通过在集合中使用 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);

最新更新