如果我们有这样的事情:
快速:购物--- shop_user ---用户--- role_user ---角色
我们希望所有来自SHOP 1的用户都使用ROLE admin。我们怎么能这样做?
来自SHOP 1的所有用户:
$shop = Shop::find( $shopId );
$shop->users()->get();
这样的事情会很好:
$shop = Shop::find( $shopId );
$shop->users()->roles->()->where( 'name', 'Admin' )->get();
答案 0 :(得分:3)
假设您的关系按预期工作,这可以为您提供所需的结果:
$shop = Shop::with(['users' => function ($q) {
$q->whereHas('roles', function ($q) {
$q->where('name', 'Admin');
});
}])->find($shopId);
它会选择使用id = $shopId
的商店,它会将所有users
附加到role
,其中roles.name = Admin
您可以获得此类用户$users = $shop->users
答案 1 :(得分:-1)
使用whereHas()
方法:
$users = User::whereHas('roles', function($q) use($roleId) {
$q->where('id', $roleId)
})->whereHas('shops', function($q) use($shopId) {
$q->where('id', $shopId)
})->get();