比方说,我有以下代码,该代码基本上返回所有总评分超过5的电影:
$movies = Movie::where('private', 0)->with(['user', 'ratings', 'tagged'])->has('ratings', '>=', 5)->paginate(15)->onEachSide(1);
不过,我也想按每部电影的平均评分来排序这些结果。我目前正在使用laravel-rateable来管理收视率,它有一个->averageRating()
方法可以正常工作,但是我什至不知道如何利用它并在上面的查询中使用它,如果可能的话。也许无需使用特定方法即可实现?有人可以指出我正确的方向吗?
解决方案:我最终使用了下面的答案,该答案很好How to get average with orderBy Desc in Laravel 5
答案 0 :(得分:0)
不确定这一点,但是您可以尝试:
$movies = Movie::where('private', 0)
->with(['user', 'ratings', 'tagged'])
->has('ratings', '>=', 5)
->orderBy(function($item) {return $item->averageRating();})
->paginate(15)->onEachSide(1);