【发布时间】:2017-12-03 12:56:58
【问题描述】:
来自这个问题:How to GROUP and SUM a pivot table column in Eloquent relationship?
我在我的User 模型中使用了这个代码:
public function teams() {
return $this->belongsToMany('App\Models\Team', 'team_members', 'user_id', 'team_id')
->groupBy('pivot_team_id');
}
我想使用->groupBy(),因为在我的teams 中,一个user 可以作为多个team_members 用于不同的角色。我不希望 team 记录重复。
但是当我尝试访问例如在我的页面dd(Auth::user()->teams) 上使用此代码,Laravel 抛出了以下异常:
SQLSTATE[42000]: Syntax error or access violation: 1055 'laravel.teams.id' isn't in GROUP BY (SQL: select `teams`.*, `team_members`.`user_id` as `pivot_user_id`, `team_members`.`team_id` as `pivot_team_id` from `teams` inner join `team_members` on `teams`.`id` = `team_members`.`team_id` where `team_members`.`user_id` = 3 group by `pivot_team_id`)
为什么会这样?我哪里弄错了?
【问题讨论】:
-
@ayip 它现在可以工作了,但它看起来像是一个 hack。必须有一种方法可以在不禁用整个组的情况下做到这一点