在“委托”中分配新角色


Assign a new role in Entrust

作为我的'批准'过程的一部分,我希望管理员根据需要为用户分配不同的角色。

我想"分离"用户的当前角色并添加一个新角色。

$id = Input::get('submit');
$user = User::where('id','=', $id)->first();
$user->attachRole(2);
$user->save();

上面的代码获取我要为其重新分配角色的用户 ID,然后获取分配新角色的 attachRole,但我无法删除前一个。

但是,它不会删除分配给它的用户的先前角色。

$user->detachRole(USER ID HERE);

似乎不起作用。

唯一的问题是,如果它在"角色"表中,我可能会使用 $user->roles()->delete(类似的东西),其中将用户分配给角色在"assigned_roles"表中。

任何帮助将不胜感激。

下面是一个可用于保存角色的示例函数,它接受角色 ID 数组:

 /**
 * Save roles inputted from multiselect
 * @param $inputRoles
 */
public function saveRoles($inputRoles)
{
    if(! empty($inputRoles)) {
        $this->roles()->sync($inputRoles);
    } else {
        $this->roles()->detach();
    }
}