升级到laravel 5.3之后不工作分组

时间:2016-09-06 09:03:59

标签: php laravel orm laravel-5.2 laravel-5.3

这是在laravel 5.2上运行的代码

$menus = CmsMenuItem::groupBy('menu_id')->get();

但现在它会抛出错误

  

SQLSTATE [42000]:语法错误或访问冲突:1055表达式#1   SELECT列表不在GROUP BY子句中并包含nonaggregated   列'convertifier_cms.cms_menu_items.id',这不是功能上的   依赖于GROUP BY子句中的列;这是不相容的   sql_mode = only_full_group_by(SQL:select * from'cms_menu_items'group   通过'menu_id')

我也试过

 `strict => false` 
在data.php中

但没有效果

3 个答案:

答案 0 :(得分:9)

尝试使用此数据库配置。

 'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

并以这种方式使用查询

$menus =DB::table('cms_menu_item')
    ->select('*')
    ->groupBy('menu_id')
    ->get();

答案 1 :(得分:4)

根据此PR,只需在数据库配置中尝试此操作

 # -*- coding: utf-8 -*-

如果没有,则会发生一些已知问题。

请参阅这些链接PR& Issue

答案 2 :(得分:2)

请转到config / database.php文件夹。在mysql配置数组中,更改strict => true to strict =>是的,一切都会好起来的。