Назначить новую роль в Entrust

В рамках моего процесса «утверждения» я хочу, чтобы администратор назначал пользователям разные роли по требованию.

Я хочу «отсоединить» текущую роль пользователя и добавить новую.

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

$user->save();

Приведенный выше код получает идентификатор пользователя, которому я хочу переназначить роль, а затем attachRole назначает новую роль, но я не могу удалить предыдущую.

Однако он не удаляет предыдущую роль пользователя, которой он был назначен.

$user->detachRole(USER ID HERE);

не работает.

Единственная проблема в том, что если бы это было в таблице «Роли», я мог бы использовать $user->roles()->delete (что-то в этом роде), где назначение пользователей ролям находится в таблице «assigned_roles» .

Любая помощь будет очень признательна.


person Community    schedule 31.03.2014    source источник


Ответы (1)


Вот пример функции, которую вы можете использовать для сохранения своих ролей, она принимает массив идентификаторов ролей:

 /**
 * Save roles inputted from multiselect
 * @param $inputRoles
 */
public function saveRoles($inputRoles)
{
    if(! empty($inputRoles)) {
        $this->roles()->sync($inputRoles);
    } else {
        $this->roles()->detach();
    }
}
person John    schedule 31.03.2014
comment
Спасибо, Джон! Наконец-то я перестал терять сон. - person ; 01.04.2014