输入图像描述hereth我在查询中添加组时出现的问题...
Form::select('*')->groupBy('serial_num')->orderBy('id')->Paginate(10);
sqlstate [42000]:语法错误或访问违规:1055 'database.form.id'不在组中(sql:select * select *
form
group( 由serial_num
限制10偏移0(
这与laravel无关。您可以选择非聚集的列(*(与分组组合。
您有两个选项
- 在您选择的每一列上使用聚合(Min,Max,AVG,Group_concat(,而不是通过 进行分组
- mysql Server上的bloce holly_full_group_by
更详细的解释https://dev.mysql.com/doc/refman/5.7/en/group-byhandling.html
编辑:显然Laravel也可以将MySQL模式设置为即时。
如评论中所述,您可以在Laravel数据库设置中禁用严格模式,然后Laravel应该相应地设置MySQL Server模式,我找不到此
的最新文档https://github.com/laravel/laravel/laravel/blob/master/config/database.php#l59
https://mattstauffer.com/blog/strict-mode-and-other-mysql-customizations-in-laravel-5-2/
更改设置后,请确保清除任何配置缓存
转到config database.php
set
'mysql' => [
'strict' => false
保存后,运行此命令
php artisan optimize
如果您可以自己处理分页,则可以获取结果,然后在集合上实现groupBy
。
$forms = Form::orderBy('id')->get()->groupBy(function ($item, $key) {
return $item['serial_num'];
});