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