微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决laravel出现Syntax error or access violation: 1055 ‘***‘ isn‘t in GROUP BY

laravel 5.3 以后认开启 MysqL严格模式(strict)
MysqL在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,
group by 的字段没有出现在 select 的语句中会报错.关闭了严格模式就不会报错.

如下Demo

复制代码

public static function orders($phase)
{
    return self::select(DB::raw("SUM(orders) as orders"),"type","users_id","name")
                ->groupBy("type","name")
                ->where("phase",$phase)
                ->get();
}

会出现如下错误,当然*号内的内容是不同的

复制代码

Syntax error or access violation: 1055 '***' isn't in GROUP BY

解决办法

laravel出现上述错误sql_mode设置导致的问题,修改config/database.PHP配置文件strict => false即可关闭了严格模式:

复制代码

'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,
],

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。