Laravel SUM 一对多(逆)/属于关系
Posted
技术标签:
【中文标题】Laravel SUM 一对多(逆)/属于关系【英文标题】:Laravel SUM One To Many (Inverse) / Belongs To Relationship 【发布时间】:2021-06-30 13:46:24 【问题描述】:我有stuffs
表,其中只会保存标题。
东西表:
id
title
我还有user_stuffs
表,每个用户都有n
的东西量。
用户资料表:
id
stuff_id
user_id
volume
我怎样才能SUM
每次填充卷并得到这样的结果:
"title": "Stuff Title",
"total": 7634
我尝试只使用像这个查询这样的 sql exec,但是我如何在 Laravel 中正确地做到这一点?
SQL:
SELECT
stuffs.id,
stuffs.title,
SUM(user_stuffs.volume) AS total
FROM `user_stuffs`
INNER JOIN stuffs ON user_stuffs.stuff_id = stuffs.id
GROUP BY user_stuffs.stuff_id
【问题讨论】:
【参考方案1】:试试这个
DB::table('user_stuffs')
->Join('stuffs','stuffs.id','=','user_stuffs.stuff_id')
->select('stuffs.id','stuffs.title',DB::raw('SUM(user_stuffs.volume) AS total'))
->groupBy('user_stuffs.stuff_id','stuffs.id',
'stuffs.title')
->get();
【讨论】:
错误Illuminate\Database\QueryException with message 'SQLSTATE[42000]: Syntax error or access violation: 1055 'database.stuffs.id' isn't in GROUP BY (SQL: select
stuffs.
id,
stuffs.
title, SUM(user_stuffs.volume) AS total from
user_stuffs`内部连接stuffs
stuffs
.@9876543329@=@976 @group by user_stuffs
.stuff_id
)'`
我已经更新了答案,试试看告诉我以上是关于Laravel SUM 一对多(逆)/属于关系的主要内容,如果未能解决你的问题,请参考以下文章