laravel - 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
我在模型上运行时唯一返回的第一个权限。
解决方案
试试这样:
$user = Auth::user();
$role_user = $user->roles->pluck('name');
return $role_user;
推荐阅读
- java - 无法将从文件读取的数据推送到通用堆栈
- flutter - 如何在 Flutter 中实现类似视频流和视频滚动的 Tiktok
- python - 我在 sqlalchemy 中遇到语法错误,但在 sql server 中同样有效
- jquery - 使用 JQuery 组合单选按钮状态检查
- mysql - 备份/恢复大小约为 2TB 的过大数据库的最佳实用方法
- node.js - 网页呈现,但第一次使服务器崩溃,然后呈现而不会使服务器随后崩溃
- java - Junit Mokito 总是返回空值
- ios - 从其他 iOS 应用打开 iOS 应用时获取应用引荐来源网址
- php - 运行 php artisan cache:clear Declaration of Symfony\Component\Translation\TranslatorInterface::setLocale($locale) 后出现错误
- modelica - Dymola中使用牛顿迭代法的详细过程