我在其他问题上尝试过解决方案,但这并没有解决我的问题。我已将严格从 true 变为 false 。使用的模式
'modes' => [
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'
]
也是。但我得到了同样的错误。
$orders = Order::orderBy('id', 'desc')->groupBy('order_id')->get();
dd($orders);
这会引发错误语法错误或访问冲突:1055'my_db.orders.id'不在GROUP BY中(SQL:从orders
组中选择*按order_id
命令由id
desc)
(我正在使用Laravel 5.6)
答案 0 :(得分:6)
在config / database.php中 改变严格的' =>真的要严格要求' =>假 并清除缓存
php artisan config:cache
OR
mysql> SET GLOBAL sql_mode =(SELECT REPLACE(@@ sql_mode,' ONLY_FULL_GROUP_BY',''));
答案 1 :(得分:2)
简短回答
这是一个MySQL问题,可以解决更改Laravel配置为@ Rp9编写,将 a b c d e
row2 0 -1 1 NA 0
row3 0 NA 0 0 NA
row4 0 1 -1 0 1
修改为strict => true
中的strict => false
。
长答案
MySQL 5.7引入了一些我们称之为“严格模式”的东西,它是新模式的组合,总之,使MySQL能够比以前更严格地处理您的查询。
“严格模式”是MySQL 5.7默认启用的模式列表,包括以下模式:
config/database.php
那么,如果您想要禁用/启用这种严格模式,该怎么办? Laravel帮助我们。
ONLY_FULL_GROUP_BY
STRICT_TRANS_TABLES
NO_ZERO_IN_DATE
NO_ZERO_DATE
ERROR_FOR_DIVISION_BY_ZERO
NO_AUTO_CREATE_USER
NO_ENGINE_SUBSTITUTION