2015-02-09 4 views
1

Я пытаюсь обновить сводную таблицу, как это:updateExistingPivot() не работает

public function updatePermission($id, $permissionId) 
{ 
    $permissionValue = Input::get('value'); 
    $user = User::find($id); 

    $perms = ['value' => $permissionValue]; 
    $user->permissions()->updateExistingPivot($permissionId, $perms); 
} 

Этот стержень был ранее создан с:

public function attachPermission($id) 
{ 
    $permissionId = Input::get('id'); 
    $permissionValue = Input::get('value'); 
    $user = User::find($id); 

    if (!$user->permissions->contains($permissionId)) { 

     $user->attachPermissionById($permissionId); 
     $perms = ['value' => $permissionValue]; 
     $user->permissions()->updateExistingPivot($permissionId, $perms); 

    } else { 

     return Response::json(array('error' => 'Permission ' . $permissionId . ' is alreay set for user ' . $user->id)); 

    } 

    return Response::json(array('role' => User::with(['roles.permissions', 'permissions', 'students'])->find($user->id))); 
} 

Когда метод updatePermission() ударил , он проходит отлично, но он не обновляет сводную таблицу с новым значением. Что я здесь делаю неправильно?

+1

Вы когда-нибудь получали updateExistingPivot для работы? – Jeemusu

ответ

1

Я не скажу вам, почему это не работает, но я предлагаю вам сделать это:

public function attachPermission($id) 
{ 
    $permissionId = Input::get('id'); 
    $value = Input::get('value'); 
    $user = User::find($id); 

    $sync = $user->permissions()->sync([$permissionId => compact('value')], false); 

    return (in_array($permissionId, $sync['updated'])) 
     ? Response::json(...) // permission updated 
     : Response::json(...); // permission added 
} 

Это будет добавить или обновить новое разрешение для вас.

+0

Отличное решение, спасибо! – Till

Смежные вопросы