使用雄辩(Laravel)组



输入图像描述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无关。您可以选择非聚集的列(*(与分组组合。

您有两个选项

  1. 在您选择的每一列上使用聚合(Min,Max,AVG,Group_concat(,而不是通过
  2. 进行分组
  3. 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'];
});

最新更新