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