laravel 5.5 group by doesn不工作

时间:2018-04-12 20:08:47

标签: php laravel group-by eloquent

我试图获取一些数据,但我只是得到了这个错误

  

SQLSTATE [42000]:语法错误或访问冲突:1055' ms_mascotas.ms_razas.id'不在GROUP BY(SQL:选择ms_razas.idms_razas.nombrems_mascotas.raza_idms_mascotas.id来自ms_mascotas内部联接ms_razas { {1}} = ms_razas.id其中ms_mascotas.raza_id = 1组ms_razas.tipo_animal_id)"

我的查询是

ms_mascotas.raza_id

我一直在读这个错误,它与数据库文件中的严格模式有关,默认情况下strict设置为false,我该怎么办?

2 个答案:

答案 0 :(得分:0)

您选择的所有内容都必须添加到组中,这是一个示例

 Mascota::select("ms_razas.id","ms_razas.nombre","ms_mascotas.raza_id","ms_mascotas.id")
       ->join("ms_razas","ms_razas.id","=","ms_mascotas.raza_id")
       ->where("ms_razas.tipo_animal_id",$id)
       ->groupBy("ms_razas.id","ms_razas.nombre","ms_mascotas.raza_id","ms_mascotas.id")
       ->get();

你需要一个完整的小组:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25
  

SQL92要求select子句中的所有列(聚合除外)都是group by子句的一部分。 SQL99稍微放宽了这个限制,并声明select子句中的所有列必须在功能上依赖于group by子句。 MySQL默认允许部分分组,这可能产生非确定性答案,例如:

create table t (x int, y int);
insert into t (x,y) values (1,1),(1,2),(1,3);
select x,y from t group by x;
+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
+------+------+

即。为组x选择随机y。可以通过设置@@sql_mode

来阻止此行为
set @@sql_mode='ONLY_FULL_GROUP_BY';
select x,y from t group by x; 
ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY

答案 1 :(得分:0)

转到config\database.php并更改您使用的数据库

的设置
'strict' => false