Laravel由两个用户模型共享的多对多关系获取角色



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

我认为下面的查询应该完成任务:

$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的用户。

最新更新