如何根据枢轴 table - Laravel 4 / Eloquent 上的关系计数进行排序
How to order by a count of relations on a pivot table - Laravel 4 / Eloquent
我有 table 个视频、table 个用户和 table 个 "favourites" 的枢轴(喜欢视频的人)。我想按最喜欢的顺序排列查询排名的结果。
我将在下面定义table和模型的相关字段。
视频Table:
id, 标题
用户Table:
编号
收藏夹Table:
id, video_id, user_id
视频模型:
public function favourited()
{
return $this->belongsToMany('User', 'favourites', 'video_id', 'user_id');
}
这是我尝试使用 Eloquent
进行操作的 sql 示例
SELECT
videos.title,
COUNT(favourites.id) AS FavouriteCount
FROM videos
LEFT JOIN favourites ON videos.id = favourites.video_id
GROUP BY videos.id
ORDER BY FavouriteCount desc
DB::table('videos')
->leftJoin('favourites', 'videos.id', '=', 'favourites.video_id')
->select('videos.title',DB::raw('count(favourites.id) as FavouriteCount'))
->groupBy('videos.id')
->orderBy('FavouriteCount', 'desc')
->get();
有关详细信息,请参阅此处 http://laravel.com/docs/4.2/queries
我有 table 个视频、table 个用户和 table 个 "favourites" 的枢轴(喜欢视频的人)。我想按最喜欢的顺序排列查询排名的结果。
我将在下面定义table和模型的相关字段。
视频Table: id, 标题
用户Table: 编号
收藏夹Table: id, video_id, user_id
视频模型:
public function favourited()
{
return $this->belongsToMany('User', 'favourites', 'video_id', 'user_id');
}
这是我尝试使用 Eloquent
进行操作的 sql 示例SELECT
videos.title,
COUNT(favourites.id) AS FavouriteCount
FROM videos
LEFT JOIN favourites ON videos.id = favourites.video_id
GROUP BY videos.id
ORDER BY FavouriteCount desc
DB::table('videos')
->leftJoin('favourites', 'videos.id', '=', 'favourites.video_id')
->select('videos.title',DB::raw('count(favourites.id) as FavouriteCount'))
->groupBy('videos.id')
->orderBy('FavouriteCount', 'desc')
->get();
有关详细信息,请参阅此处 http://laravel.com/docs/4.2/queries