laravel - 如何按平均评分排序结果
问题描述
假设我有以下代码,它基本上返回所有总评分超过 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
解决方案
不确定这个,但你可以尝试:
$movies = Movie::where('private', 0)
->with(['user', 'ratings', 'tagged'])
->has('ratings', '>=', 5)
->orderBy(function($item) {return $item->averageRating();})
->paginate(15)->onEachSide(1);
推荐阅读
- java - 递归调用订单插入方法对整个链表进行排序时遇到问题
- php - 如何生成动态 IF 语句
- ios - 在 UIScrollView 中仅水平缩放 UIView
- javascript - 在 Typescript 中扩展 Jquery
- css - CSS - 正确的文本垂直居中对齐
- sql - 将配件与订单中的产品连接起来
- swift - 提前完成 UIViewPropertyAnimator 的一些动画
- sql - 如何在 Node.js 和 sqlite 中实现类似 backref 的查询?
- firebase - Firebase 文档读取优化
- android - 使用滑动加载图像时Android Image setImageBitmap不起作用