首页 > 解决方案 > Laravel 7 Spatie 返回相同的角色

问题描述

我有一个名为“角色”的表:

id | name  | guard_name | created_at          | updated_at
-------------------------------------------------------------------
1  | userx | web        | 2020-09-02 22:00:34 | 2020-09-02 22:00:34
2  | admin | web        | 2020-09-03 23:28:53 | 2020-09-03 23:28:53

我还有另一张桌子叫role_has_permissions

permission_id | role_id
-----------------------
145           | 2
146           | 2
147           | 2
151           | 3

另一个表名为model_has_roles

role_id | model_type      | model_id
-------------------------------------
1       | App\Models\User | 120
3       | App\Models\User | 3

当我在“MenuController.php”上运行命令时

$user = Auth::user();   
$role_user = $user->getRoleNames();
return $role_user;

我收到了一个回报["admin"],这是正确的,因为我以 admin 身份登录,即模型 id "3"

但是当我在Menu.php(Model) 上运行相同的命令时,我会收到以下 return ["userx"]

这就像getrolenames我在模型上运行时唯一返回的第一个权限。

标签: laravellaravel-permission

解决方案


试试这样:

$user = Auth::user();   
$role_user = $user->roles->pluck('name');
return $role_user;

推荐阅读