Eloquent 获取具有最多附加关系的行
Eloquent get row with most attached relationships
我有一个 'projects' table 和一个 'users' table。
用户能够喜欢项目。这是使用枢轴 table.
的多对多关系
我想获得点赞最多的项目。
有没有一种简单的方法可以使用 eloquent?
来实现这一点
我现在能想到的唯一方法是构建单独的查询,我想避免这种情况。
谢谢。
您可以加入您的枢轴 table 并计算结果
$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
。
我有一个 'projects' table 和一个 'users' table。 用户能够喜欢项目。这是使用枢轴 table.
的多对多关系我想获得点赞最多的项目。 有没有一种简单的方法可以使用 eloquent?
来实现这一点我现在能想到的唯一方法是构建单独的查询,我想避免这种情况。
谢谢。
您可以加入您的枢轴 table 并计算结果
$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
。