我创建了一个网站。 在此,我创建了一些程序包(例如电影程序包) 用户可以购买此套餐。 我为该用户购买一包电影时创建了观看该电影的权限。 但是如果用户想购买下一个包装,例如书籍包装,我需要允许他同时查看两个包装。
我通过spatie软件包创建了此权限。 在此,我为用户创建了角色。 电影角色成员可以观看电影。
我想知道我可以为一个用户设置多个角色吗? 我已经尝试过了,不能。
如果我想允许该用户查看两个软件包,我该怎么办。
我希望在这里有任何建议。
答案 0 :(得分:0)
您的意思是是否可以为一个模型设置多个角色?是的你可以。它在Spatie's Laravel Permission readme中:
通过角色使用权限
可以将角色分配给任何用户
$user->assignRole('writer'); // You can also assign multiple roles at once $user->assignRole('writer', 'admin'); // or as an array $user->assignRole(['writer', 'admin']); A role can be removed from a user: $user->removeRole('writer');
角色也可以同步:
// All current roles will be removed from the user and replaced by the array given $user->syncRoles(['writer', 'admin']);
因此,要向用户分配movie
和book
权限,您可以执行以下操作:
$user = App\User::find(1); // get the user
$user->arrignRole(['movie', 'book']); // assigning roles
如果用户已经具有角色,请尝试sync方法。这将删除所有以前的角色并附加指定的角色:
$user = App\User::find(1); // get the user
$user->syncRoles(['movie', 'book']); // syncing roles