0

我正在使用后端的 Spatie > Permissions 包构建一个用于管理用户/角色/权限的前端。

我正在寻求实现的一个功能是选择一个权限并进行此选择,然后显示所有具有所选权限的用户。

使用php artisan tinker,我可以使用语句: Spatie\Permission\Model\Permission::with("roles.users")->find(59);59表示有问题的权限-> id,并返回适当的结果。

我的问题是,当我将此代码带到 php 并寻求时,dd((Permission::with('roles.users')->find(59));我收到一个错误类名称必须是有效对象或字符串错误。

dd((Permission::with('roles')->find(59));Laravel 会适当地处理使用删除嵌套关系。但是我想访问具有指定权限的用户。

简而言之,嵌套的急切加载似乎失败了,这完全取决于代码是在 Laravel 还是 Tinker 中。

我正在使用 php v7.3.25 和 Laravel 8.22.1

谢谢你的帮助。

4

1 回答 1

0

好的。问题解决了。感谢那些试图提供帮助的人——你坚持认为它应该“正常工作”让我更深入地研究了代码。

Spatie Permissions 包做得很好并且研究得很好。由于我在没有进一步修改的情况下直接使用它,因此我假设关系已正确设置,并且它们是正确的。

问题在于使用的默认身份验证。Spatie 想要使用 Auth::web 而 Laravel 想要使用 Auth::sanctum。

通过“角色”连接到用户关系时发现我拥有的 Auth 功能不匹配,并引发了一般错误。因此,如果其他人发现这是一个问题,请确保您的身份验证检查具有连续性,并且一切顺利。请注意,这对 Tinker 来说不是问题,这就是为什么初始行为如此令人困惑的原因。

于 2021-03-08T13:07:34.567 回答