【发布时间】:2018-08-06 23:47:23
【问题描述】:
我正在使用 Laravel 5.6 和 Spatie laravel-permission,我想修改 model_has_roles 以便它可以有一个名为 code 的额外字段。
现在,我通过下一个命令修改库提供的迁移来做到这一点:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
这个库提供了一个有用的命令:
$user->assignRole($role);
这让我可以在一行代码中为用户分配角色。我的问题是,使用此命令会引发错误,因为我不能将code 字段留空。无论哪种方式,我都不能这样做:
$user->assignRole($role, ['code' => '0001']);
因为它会说0001 is not a role。基本上,它假设我正在尝试为用户分配两个不同的角色:$role 和 0001,而实际上我正在尝试分配一个角色:$role,并为表添加了一个额外的参数model_has_roles .
有没有办法存档这样的东西?我想也许我可以修改 assignRole 方法背后的逻辑,但我不知道如何扩展/编辑库方法。
【问题讨论】:
-
您没有向我们提供有关如何处理名为
code的新列的足够信息,但您可以将其设置为可为空,并将其默认值设置为null。如果这是您要问的问题,我会将其写为答案 -
我说我不能在使用
assignRole方法时为我的用户/角色关系设置code值。我不希望code默认为null:我想分配一个角色并在执行此操作时为model_has_roles表设置一个额外的字段。 -
我认为这是分两步完成的,除非您更改 assignRole 方法
-
但是,我该如何更改
assignRole方法或者这两个步骤是什么样的?
标签: php laravel laravel-permission