【发布时间】:2019-02-04 06:57:19
【问题描述】:
我知道之前有人问过这个问题:Laravel Grouping by Eloquent Relationship 但答案来自 2016 年,它们似乎在 2019 年不起作用。我的问题也更简单,因为我只需要一个关系级别。
我的问题
一个
用户拥有多个项目。
如何通过一次查询找到每个item_type 的用户有多少items?
这是我尝试过的:
类似的查询
User::with(['items' => function($q){
$q->groupBy('type');
});
返回此错误:
语法错误或访问冲突:1055 Expression #1 of SELECT list 不在 GROUP BY 子句中并且包含非聚合列“items.id” 它在功能上不依赖于 GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容
我尝试使用以下查询修复此错误:
User::with(['items' => function($q){
$q->select('type', \DB::raw('count(*) as total'))
->groupBy('type');
});
但是,这会返回一个 users 集合,其中每个用户的 item 集合是空的。
是否可以按查询中的关系进行分组?
【问题讨论】:
标签: php laravel laravel-query-builder