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`内部连接stuffsstuffs.@9876543329@=@976 @group by user_stuffs.stuff_id)'` 我已经更新了答案,试试看告诉我

以上是关于Laravel SUM 一对多(逆)/属于关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5.6 Eloquent ORM 关联关系,一对一和一对多

Laravel一对多关系问题与学分名称

无法在 Laravel 4 中检索一对多关系

Laravel 5 删除一对多关系

laravel eloquent 中的一对多关系

RestKit 一对多关系逆映射