在 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中终止了?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

config/database.php strict

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

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

config/database.php strict

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

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

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

5年前 评论

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