雄辩的多对多关系

时间:2017-02-14 12:35:46

标签: laravel eloquent

我有3张桌子:

groups:
id, name

group_members:
id, group_id, user_id

users:
id

现在,我要做的是获得所有与之关联的成员组(只是组) 所以,例如我有以下内容:

groups
1, test
2, test-1
3, test-2

group_members
1, 1, 1
2, 1, 2
3, 3, 1

users
1
2

如果我想获得id = 1用户所属的所有群组,则应返回:

groups
1, test
3, test-2

有没有一种说法,我可以只返回群组(在集合中)

由于

2 个答案:

答案 0 :(得分:1)

您可以使用whereHas()

Group::whereHas('users', function($q) use($userId) {
    $q->where('id', $userId);
})->get();

或者:

User::find($userId)->groups()->get();

答案 1 :(得分:0)

Group::whereHas('members', function($q) use($userId) {
    $q->where('user_id', $userId);
})->get();

这似乎有效。我必须在我的模型中添加一些belongsTo等关系