Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔集团;以雄辩的关系计数_Php_Laravel_Laravel Query Builder - Fatal编程技术网

Php 拉威尔集团;以雄辩的关系计数

Php 拉威尔集团;以雄辩的关系计数,php,laravel,laravel-query-builder,Php,Laravel,Laravel Query Builder,我知道之前有人问过这个问题:但答案来自2016年,2019年似乎不起作用。我的问题也更简单,因为我只需要一个关系级别 我的问题 A 用户有多个项。 如何通过一个查询查找用户每种项目类型的项目数 这就是我所尝试的: 像这样的疑问 User::with(['items' => function($q){ $q->groupBy('type'); }); 返回此错误: 语法错误或访问冲突:选择列表的1055表达式#1 不在GROUP BY子句中,并且包含未聚合的列“items.id

我知道之前有人问过这个问题:但答案来自2016年,2019年似乎不起作用。我的问题也更简单,因为我只需要一个关系级别

我的问题

A 用户有多个。 如何通过一个查询查找用户每种
项目类型的
项目数


这就是我所尝试的:

像这样的疑问

User::with(['items' => function($q){
  $q->groupBy('type');
});
返回此错误:

语法错误或访问冲突:选择列表的1055表达式#1 不在GROUP BY子句中,并且包含未聚合的列“items.id” 功能上不依赖于GROUP BY子句中的列; 这与sql\u mode=only\u full\u group\u by不兼容

我试图通过以下查询修复此错误:

User::with(['items' => function($q){
    $q->select('type', \DB::raw('count(*) as total'))
          ->groupBy('type');
});
但是,这将返回一个
用户的集合,其中每个用户的
集合为空

是否可以通过查询中的关系进行分组?

出现错误:

您使用$q作为闭包参数,在内部使用$query。有时我也会遇到这样的问题:我必须在关系查询闭包中传递外键才能得到结果:

<?php 

$userWithItems = User::with(['items' => function($q){
    $q->select('type', \DB::raw('count(*) as total'), 'user_id')
          ->groupBy('type');
});
有一个错误:

您使用$q作为闭包参数,在内部使用$query。有时我也会遇到这样的问题:我必须在关系查询闭包中传递外键才能得到结果:

<?php 

$userWithItems = User::with(['items' => function($q){
    $q->select('type', \DB::raw('count(*) as total'), 'user_id')
          ->groupBy('type');
});

谢谢你发现了错误,我更正了。我想你是对的,当我加上外键时,它会起作用的。但是,我不想通过
禁用
仅禁用整个组。不过谢谢你,谢谢你发现了错误,我改正了。我想你是对的,当我加上外键时,它会起作用的。但是,我不想通过
禁用
仅禁用整个组。不过还是谢谢你