问题描述
我正在尝试找出是否有一种简单的方法来获取具有某个角色或另一个角色的所有用户。
在Spatie Laravel Permissions的官方文档中,找不到此文件。
我正在尝试这样,但是我得到了所有用户。
User::role(['Individual','Organisation','Venue'])->get();
我也在尝试这样:
User::whereHas("roles",function($q) {
$q->orWhere(function ($query) {
$query->where("name","Individual")
->where("name","Venue")
->where("name","Organisation");
});
})->get();
在Db角色表中,我有:
解决方法
@Apokryfos意味着您要这样更改
User::whereHas("roles",function($q) {
$q->where("name","Individual")
->orWhere("name","Venue")
->orWhere("name","Organisation");
})->get();
如果您希望用户拥有所有角色而不是其中一个角色
User::whereHas("roles",function($q) {
$q->where("name","Individual")
})->whereHas("roles","Venue")
})->whereHas("roles","Organisation")
})->get();
,
您可以尝试whereIn()
到roles()引用链接https://laravel.com/docs/8.x/queries#additional-where-clauses
User::with("roles")->whereHas("roles",function($q) {
$q->whereIn("name",["Individual","Venue",'Organisation']);
})->get();
尝试id
更好,因为它是主键
User::with("roles")->whereHas("roles",function($q) {
$q->whereIn("id",[6,7,8]);
})->get();
注意,此处
name
应该与您数据库中的角色名称的确切字符串匹配