laravel-使用唯一用户获取最后评论

laravel-使用唯一用户获取最后评论,laravel,eloquent,Laravel,Eloquent,如何在laravel中每个用户只需1条评论就可以获取我最后的10条评论 我看到了,但我想以一种干净的方式用雄辩的口才来做这件事你试过了吗 Comment::groupBy('user_id')->limit(10)->get(); 如果您想获取最新的评论,请创建一个名为UserComment的类,为每个用户存储最新的评论\u id,并为创建的每个新评论更新它,然后您可以通过 UserComment::orderBy('updated_at')->limit(10)->g

如何在laravel中每个用户只需1条评论就可以获取我最后的10条评论

我看到了,但我想以一种干净的方式用雄辩的口才来做这件事

你试过了吗

Comment::groupBy('user_id')->limit(10)->get();
如果您想获取最新的评论,请创建一个名为UserComment的类,为每个用户存储最新的评论\u id,并为创建的每个新评论更新它,然后您可以通过

UserComment::orderBy('updated_at')->limit(10)->get();
这就是逻辑:


Comment::groupBy('user_id')->orderBy('id','desc')->first()

如果您可以通过最高ID找到最新的注释:

$ids = Comment::selectRaw('MAX(id) id')->groupBy('user_id')->take(10)->pluck('id');
$comments = Comment::whereIn('id', $ids)->orderByDesc('id')->get();

你想达到什么目标?如果您的表格设计错误,很可能需要在Eloquent之外循环。请提供更多信息。所以我们可以帮助你。
skip(0)->take(10)
is missinggroupBy不是解决方案,因为不返回最新的注释
orderBy('id','desc')
orderBy('id','created_at')
将获取最新记录,现在是如何获取10条注释,每个注释1条?。您确定不使用集合执行PHP迭代吗?groupBy不是解决方案,因为它不像其他人一样返回最新的注释。groupBy不是解决方案,因为它不返回通过
MAX(id)
实现的最新注释。你试过了吗?