1

我正在尝试以与获取具有特定权限的用户列表相同的方式来获取它,但是对于角色它无法正常工作

调用未定义的方法 Spatie\Permission\Models\Role::roles()

我获取具有特定角色的用户列表的方式:

$permission = $request->permission;
$usersWithPerms = User::permission($permission)->get(); 
return array("usersWithPerms"=>$usersWithPerms);

我试图获得具有特定权限的角色的方式:

  $groupsWithPerms = Role::permission('perms_givePermToRole')->get(); 
  return array("groupsWithPerms"=>$groupsWithPerms);

BadMethodCallException 调用未定义的方法 Spatie\Permission\Models\Role::roles()

4

3 回答 3

2

获取某个角色的权限获取某个权限的角色

$permission = Permission::findOrFail(1);
$groupsWithPerms = $permission->getRoleNames();
//dd($groupsWithPerms);

$role = Role::findOrFail(1);
$groupsWithRoles = $role->getPermissionNames();
//dd($groupsWithRoles);
于 2019-11-27T05:23:02.730 回答
1

我唯一得到它的名字但不是具有特定权限的角色的ID:

$permission = Permission::findOrFail($request->idPermission);
$groupsWithPerms = $permission->getRoleNames();

其中: getRoleNames() 是 spatie 包中的一个方法。所以这很好用,但你只能得到角色的名称而不是 id。

于 2018-12-25T19:45:04.947 回答
0

没有内置的快捷方式可以将它们放入包中,但查询它们很简单:

//Eager load roles to get all data in just 1 query
$permission = Permission::with('roles')
    ->where('name', 'perms_givePermToRole')
    ->first();
$rolesWithPerm = $permission->roles;

//or

$rolesWithPerm = Role::whereHas('permissions', function($permissions){
   $permissions->where('name', 'perms_givePermToRole');
})->get();
于 2021-11-20T01:06:24.283 回答