关于 ORM 模型关联分组的问题
$search = Search::with(['brand'=>function($query){
return $query->select('id','brand_name');
}])
->groupBy('brand_id','part_num')
->having('brand_id','>',0)
->having('part_num','!=',0)
->orderBy('num','DESC')
->get([DB::raw('count(brand_id) as num'),'id','brand_id','part_num']);
//以上代码就是分组的代码.然后筛选出需要的字段报错信息
SQLSTATE[42000]: Syntax error or access violation: 1055 'smart360.sm_search.id' isn't in GROUP BY (SQL: select count(brand_id) as num,
id,brand_id,part_numfromsm_searchgroup bybrand_id,part_numhavingbrand_id> 0 andpart_num!= 0 order bynumdesc)
//上面的代码就是根据brand_id和part_num分组,然后统计最多的.倒序排序;上面的sql使用命令行执行是没错的
Sql语句
select count(brand_id) as num,
id,brand_id,part_numfromsm_searchgroup bybrand_id,part_numhavingbrand_id> 0 andpart_num!= 0 order bynumdesc
关于 LearnKu
好吧,又没人回答.靠人还不如靠自己.百度大大又帮我解决了一个问题,我分享下解决坑的解决方案吧!
报错信息
总结
laravel 5.3 是默认开启 mysql严格模式的.
mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,
group by 的字段没有出现在 select 的语句中会报错.关闭了严格模式就不会报错