Laravel多对多关系由两个用户模型共享

时间:2018-11-04 17:05:53

标签: laravel eloquent

问题很简单,如果我与用户和角色之间存在多对多的关系,并且两个用户之间有一个共享的角色,是否有一种雄辩的方法来获得该共享的角色,或者我必须调用他们的每个角色并使用两个foreach循环以匹配其记录。

1 个答案:

答案 0 :(得分:1)

我认为以下查询可以解决问题:

$userId1 = 123; // just some assumption...
$userId2 = 234; // can of course be a user object as well

$roles = Role::query()
    ->whereHas('users', function ($query) use ($userId1) {
        $query->where('users.id', $userId1);
    })
    ->whereHas('users', function ($query) use ($userId2) {
        $query->where('users.id', $userId2);
    })
    ->get();

换句话说,该查询基本上意味着:请给与ID为$userId1的用户和 ID为$userId2的用户相关的所有角色