我有一个视频表,一个用户表和一个“收藏夹”(收藏该视频的人)的数据透视表。我想按最喜欢的顺序对查询排名的结果进行排序。

我将在下面定义表和模型的相关字段。

影片表:
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/

10-15 19:44