首页 > 解决方案 > 如何按平均评分排序结果

问题描述

假设我有以下代码,它基本上返回所有总评分超过 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

标签: laraveleloquent

解决方案


不确定这个,但你可以尝试:

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

推荐阅读