2017-05-15 104 views
1

我正在尝试显示角色为'admin'或'webmaster'的用户列表。当指定一个角色时,我可以让它工作,但是当我尝试通过添加orWhere子句来获取它们时,它会返回所有用户,而不管它们的角色如何。使用Eloquent获取所有用户的角色或其他角色

$admins = User::whereHas('roles', function($q) { 
    $q->where('name', 'Admin'); 
})->paginate(25); 

我试过以下,但它返回所有用户与每个角色。

$admins = User::whereHas('roles', function($q) { 
    $q->where('name', 'Admin') 
     ->orWhere('name', 'Webmaster'); 
})->paginate(25); 

有没有人有关于如何做到这一点的任何想法?作为参考,我有一个用户表,一个角色表和一个role_user表,它是从角色到用户的多对多表。

回答

2

试试这个,

$admins = User::whereHas('roles', function($q) { 
    $q->whereIn('name', ['Admin', 'Webmaster']); 
})->paginate(25); 
+0

那不是查询'roles'关系。 – fubar

+0

@farar我已经更新了我的答案检查请 –

+0

看起来正确。 – fubar

相关问题