2014-03-31 70 views
4

一个新的角色,我的“批准”过程的一部分,我想给管理员用户分配不同的角色,在需求。分配在委托

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

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

$user->save(); 

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

但是,它不会删除用户以前的角色也被分配到。

$user->detachRole(USER ID HERE); 

似乎不起作用。如果它在'Role'表中,我可以使用$ user-> roles() - > delete(类似的东西),其中用户分配给角色的位置在'assigned_roles'表。

任何帮助将非常感激。

回答

10

这里是你可以用它来保存你的角色的实例函数,它接受角色ID的数组:

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

谢谢你,约翰!最后,我已经停止失眠了。 – Ben

+0

不知道''detach()''函数存在,谢谢John –