Laravel сохраняет или обновляет отношения «многие ко многим» с дополнительным столбцом

У меня есть отношения «многие ко многим», настроенные в laravel, где я хочу сохранить пользовательские настройки. Настройка может быть установлена ​​многими пользователями, и у пользователя может быть много настроек.

У меня есть дополнительное поле с именем «значение» в сводной таблице, где я хочу сохранить значение, установленное пользователем.

Что ж, я хочу создать новую запись, когда для конкретного пользователя и настройки нет значения. Но если значение уже есть, оно должно быть обновлено.

Это то, что я пробовал:

$setting = Setting::find(1);
Auth::user()->settings()->save($setting,array('value' => 15));

Как только я меняю значение на что-то другое, автоматически создается новая запись. Но я бы хотел, чтобы он обновлялся. Как я могу этого добиться?


person sleepless    schedule 26.04.2015    source источник


Ответы (1)


Используйте метод UpdateOrCreate.

$setting = Setting::find(1);
Auth::user()->settings()->updateOrCreate($setting,array('value' => 15));

Документация по методу

person Arthur Samarcos    schedule 26.04.2015
comment
Спасибо! Я все еще использую laravel 4.2, и этого метода там, похоже, не существует. Вот почему я не нашел его. Думаю, пора обновиться тогда. - person sleepless; 26.04.2015