laravel - orderBy on hasMany 与 laravel 中的分页关系
问题描述
Act Review 通过这种关系连接到“Act_master”。One-Act 可以有很多评论。
public function reviews() {
return $this->hasMany('ActReview', 'act_id', 'id');
}
问题:我应该如何通过最大评论数到最低评论数来获得行为列表顺序。
到目前为止我尝试了什么?
我已经添加了带有“whereHas”的查询,但结果列表没有得到想要的结果,因为行为列表具有最高到最低的评论。
我也尝试过“WITH”,但这也不起作用。
如果可能的话,请指导我根据最大评论数到最低评论数来获取行为列表。
$list = ActMaster::where('status', '=', '1');
$list = $list->whereHas('reviews',function ($query) {
$query->select(\DB::raw('count(*) as row_count'));
$query->where('published', '=', '1');
$query->orderBy('row_count','desc');
$query->groupBy('act_id');
});
$list = $list->paginate(10);
解决方案
尝试这个 :
$list = ActMaster::where('status', 1)->whereHas('reviews', function($query){
$query->select(\DB::raw('count(*) as row_count'))
->where('published', '1')
->groupBy('act_id')
->orderBy('row_count','desc');
})->paginate(10);
推荐阅读
- angular7 - 实现hereMap Api时出现类型错误
- javascript - 使用 momentjs 获取时区特定日期
- python - 带有 dask 集群的 Linux 上的 Pyinstaller exe 导致多处理炸弹
- python - Django,访问模型方法
- code-coverage - 2020 年 12 月 18 日之后的 Sonarcloud 覆盖配置
- elasticsearch - 使用 Spring Data Elasticsearch Reactive Template 检索聚合
- awk - 根据bash中的两列计算唯一值的数量
- wordpress - WordPress REST API 端点 - 如何在同一端点上允许多个可选 ID?
- python - 连接线图 seaborn 中的标记
- elasticsearch - Elastic Search 可以用作 NoSQL 数据库吗