如何按平均评分排序结果

时间:2019-12-21 17:29:24

标签: laravel eloquent

比方说,我有以下代码,该代码基本上返回所有总评分超过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

1 个答案:

答案 0 :(得分:0)

不确定这一点,但是您可以尝试:

$movies = Movie::where('private', 0)
    ->with(['user', 'ratings', 'tagged'])
    ->has('ratings', '>=', 5)
    ->orderBy(function($item) {return $item->averageRating();})
    ->paginate(15)->onEachSide(1);