Laravel spatie/laravel-permissions 的问题(模型用户中的 HasRole)

Problem with Laravel spatie/laravel-permissions ( HasRole in Model User )

我的 spatie/laravel-permissions 库有问题。

之前我已经在我的系统中实现了它,但是在执行 composer update 之后它停止工作了...

问题出在我在用户模型中添加 HasRole 时。一切都崩溃了,我得到了错误: “调用数组中的成员函数 first()” 提到 PermissionRegistrar 包文件。

同样,如果我尝试在我的系统中输入另一条路线,出现的错误是“ 未定义索引:名称

应该注意的是,我创建了我的模型,我在数据库中创建了我的表,并且我按照文档执行了包安装过程,正如我之前所说,角色和权限系统之前对我有用。

我应该提到的是,我之前用“描述”替换了“名称”字段,但是我在库中遇到了一些配置问题,所以我 运行 另一个迁移添加了名称字段,库需要。 运行 迁移后,一切似乎都正常工作

您可能遇到了与 Spatie 特别相关的缓存问题。如果您在为数据库播种时遇到任何类型的问题,您可以在 run() 方法

中的种子顶部添加此行
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();

另一方面,如果您手动更改了某些内容,比方说从 DB,您可以尝试使用 artisan 命令

php artisan permission:cache-reset

https://spatie.be/docs/laravel-permission/v5/basic-usage/artisan#content-resetting-the-cache

请注意,即使您是 运行 使用

进行全新安装,也需要清除缓存
php artisan migrate:fresh --seed

那么您只是 运行 所有软件包的完整更新? 这是一种可怕的情况,我认为我从未对所有软件包进行过完整更新。 我不确定您要使用或使用哪个版本的 spatie,这可能会有所帮助。

当我从 Laravel 5.7 一直到 Laravel 8 进行完整更新时,spatie 很痛苦。不仅仅是一点点疼痛,而是连续 4 天更新疼痛的全部工作。所有数据库表都已重命名,并添加了更多内容。然后我不得不编写代码,以将 20k 用户和权限从旧表转移到具有正确关系的新表。然后我不得不去使用更新的功能......等等。噩梦。

正如您所看到的,您的问题有点含糊不清,无法给出正确答案。