Eloquent获得最多关联的行

时间:2015-03-26 21:00:48

标签: mysql laravel eloquent

我有一个'项目'表格和用户'表。 用户可以喜欢项目。这是使用数据透视表的多对多关系。

我想让与之相关的项目最多。 有没有一种简单的方法可以使用雄辩来实现这一目标?

我现在能想到的唯一方法就是建立单独的查询,我希望避免这些问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以加入数据透视表并计算结果,例如

$projects = Project::join('project_likes as pl', 'pl.project_id', '=', 'projects.id')
->groupBy('projects.id')
->orderBy('count','desc')
->get(['projects.*', DB::raw('COUNT(pl.project_id) as count')]);

我认为这应该有效。如果没有,请告诉我,我会检查并编辑我的答案。当然,如果您愿意,可以添加->limit(1)以仅获得一个结果。或者使用first而不是get使用相同的参数。