Laravel SQL 查询失败, SQL 语句本身没有问题。

我写了一个这样的接口:

Laravel SQL查询失败, SQL语句本身没有问题。
访问该接口报错42000:

Laravel SQL查询失败, SQL语句本身没有问题。

"message": "SQLSTATE[42000]: Syntax error or access violation: 1055 'fb.fb_res.spend' isn't in GROUP BY (SQL: select `user`, SUM(spend) as spend, SUM(purchase_value) as purchase_value, SUM(shipping_fee) as shipping_fee, (spend/purchase_value) as roas from `fb_res` group by `user`)",
"code": "42000",
"status_code": 500,

提示SQL语法错误,而在数据库中执行该语句是正确的:

Laravel SQL查询失败, SQL语句本身没有问题。

请问为什么?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

我猜测可能是 database.php 配置文件中的 'strict' => true 严格模式引起的,你不如直接用 DB::table 写一个查询吧。

4年前 评论
acldm (楼主) 4年前
ㅤㅤ (作者) 4年前
acldm (楼主) 4年前
ㅤㅤ (作者) 4年前

把严格模式去了

4年前 评论

你先把database的严格模式关了
还有查询的别名最好还是不要和字段名重复
最后还有你那个spend/purchase_value没看懂

FeRbs::groupBy('user')
            ->select(
                'user',
                DB::raw('SUM(spend) as spend_all'),
                DB::raw('SUM(purchase_value) as purchase_value_all'),
                DB::raw('SUM(shipping_fee) as shipping_fee_all'),
                DB::raw('IF(SUM(spend)/SUM(purchase_value),SUM(spend)/SUM(purchase_value),0) as roas')
            )->get()->toArray();
4年前 评论
acldm (楼主) 4年前
66

有点~饿 怎么说呢 为什么不直接写一个selectRaw呢

4年前 评论
小猪蹄子 4年前
GitPush 4年前

求这个主题,VSCode的

4年前 评论
acldm (楼主) 4年前

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