我有一个'项目'表格和用户'表。 用户可以喜欢项目。这是使用数据透视表的多对多关系。
我想让与之相关的项目最多。 有没有一种简单的方法可以使用雄辩来实现这一目标?
我现在能想到的唯一方法就是建立单独的查询,我希望避免这些问题。
谢谢。答案 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
使用相同的参数。