我有一个视频表,一个用户表和一个“收藏夹”(收藏该视频的人)的数据透视表。我想按最喜欢的顺序对查询排名的结果进行排序。
我将在下面定义表和模型的相关字段。
影片表:
ID,标题
用户表:
ID
收藏夹表:
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
关于mysql - 如何通过数据透视表上的关系计数进行排序-Laravel 4/Eloquent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30780974/