mysql - 使用查询构建器(laravel)按 desc 求和和排序

标签 mysql laravel query-builder

我有多个表的som结果,由

选择
$places = Place::with(['rates' => function($query)
    {
        $query->select('id', 'place_id', 'criterion_id', 'value');

    }])->select('id', 'coords')->get();

我需要按值的总和(或平均值)对这个结果进行排序。我怎样才能做到这一点?我试着用

$query->select('id', 'place_id', 'criterion_id', 'value')->sum('value'); 

但它不起作用。

I have such table

最佳答案

如果它对你有用。您可以使用 JOIN 而不是 Eager Loading。

代码如下:

Place::leftJoin('rates', 'places.id', '=', 'rates.place_id')
          ->selectRaw('places.*, SUM(rates.value) as sumOfRateValues')
          ->groupBy('places.id')
          ->orderBy('sumOfRateValues', 'DESC')
          ->get();

关于mysql - 使用查询构建器(laravel)按 desc 求和和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503716/

相关文章:

mysql - 从字符串中搜索查询

symfony - Doctrine2 查询生成器在连接后仅返回相关实体

mysql - SQL 查询 - 使用不同类型过滤

php - 避免mysql关系表中出现重复

MySql 条件简短描述

php - 通过 Ajax 进行表单验证

php - 处理通过 Laravel 中的连接获取的重复行

json - 如何断言两个 JSON 字符串表示的数据相等?

php - 在 Laravel 5.6 中创建搜索表单

cakephp - 如何限制每个记录/组包含的关联?