首页 > 解决方案 > Laravel 多对多关系获取由两个用户模型共享的角色

问题描述

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

标签: laraveleloquent

解决方案


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

$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 用户以及 id 用户相关联$userId1 角色$userId2


推荐阅读