Spatie Laravel权限-如何获取具有一个或另一个角色的用户

问题描述

我正在尝试找出是否有一种简单的方法获取具有某个角色或另一个角色的所有用户
在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角色表中,我有

enter image description here

解决方法

@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应该与您数据库中的角色名称的确切字符串匹配

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...