【发布时间】:2015-03-26 21:00:48
【问题描述】:
我有一个“项目”表和一个“用户”表。 用户可以喜欢项目。这是使用数据透视表的多对多关系。
我希望获得最多喜欢的项目。 有没有使用 eloquent 实现这一目标的简单方法?
我现在能想到的唯一方法是构建单独的查询,我希望避免这种情况。
谢谢。
【问题讨论】:
我有一个“项目”表和一个“用户”表。 用户可以喜欢项目。这是使用数据透视表的多对多关系。
我希望获得最多喜欢的项目。 有没有使用 eloquent 实现这一目标的简单方法?
我现在能想到的唯一方法是构建单独的查询,我希望避免这种情况。
谢谢。
【问题讨论】:
您可以加入您的数据透视表并计算类似的结果
$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 与相同的参数。
【讨论】: