在 MySQL 命令行可以执行并得到结果,但是用 Laravel 的 ORM 和 DB 就会报错

$sql = "select DATE_FORMAT(created_at,'%Y-%m-%d') as time, count(user_id) as sum, `created_at` from `we_chat_users` where unix_timestamp(created_at) > 1573488000 AND unix_timestamp(created_at) < 1574092800 group by TO_DAYS(created_at)";

无论用模型整合这条SQL,还是DB::select,都是报

Syntax error or access violation: 1055 'created_at' isn't in GROUP BY
错误
但是放入mysql执行又没有问题。

想知道是哪个地方出现了问题?或者说其实mysql执行中其实已经报了警告错误。只是没有终止,而在laravel中终止了?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

config/database.php strict

'connections' => [
    'mysql' => [

        'strict' => false, 
    ],
],
4年前 评论
讨论数量: 2

config/database.php strict

'connections' => [
    'mysql' => [

        'strict' => false, 
    ],
],
4年前 评论

你的MySQL版本是5.7吧,ONLY_FULL_GROUP_BY这个模式是默认开启的,意思是查询项必须是聚合函数或者是包含在Group By或者Having中的字段,Laravel 中可以用ANY_VALUE(‘created_at’)这个函数。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!