Laravel 5.x Eloquent метод для обновления, создания или удаления динамического ввода

У меня есть динамический элемент формы (скажем, названия книг), который пользователь может добавить или удалить в представлении. Создание это бриз, потому что все модели книг новые, когда в контроллер поступает запрос на сохранение в базу данных. В течение обновление, если все модели книг остались без изменений, добавлены модифицированные или новые, я могу выполнить задачу с updateOrCreate где все три случая удовлетворены.

Проблема теперь в том, когда пользователь выбирает удалить книгу в представлении; Laravel пытается сохранить удаленную модель:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец имя_ столбца не может быть пустым

Есть updateCreateOrDelete метод или подобное для этого? Я не хочу удалять все книги в БД и заново создавать их, потому что это лениво и не рекомендуется, если в системе есть система аудита.

В основном у меня есть массив входов, которые могут быть добавлены или удалены:

  1. если что-то обновляется, просто обновите их запись в БД;
  2. если n добавляются, а затем создать эти новые n ценности;
  3. если m удаляются, затем удалите эти m значения из БД

0

Решение

Вы должны заботиться о своих ограничениях. Laravel не удалит вашу модель, если что-то зависит от нее. Подумайте об использовании удаления на каскаде в вашей миграции или позвольте вашей зависимости обнуляться.

1

Другие решения

Ошибка, которую вы получаете, в частности, потому что ваш столбец не обнуляемый.

Чтобы это исправить, вы захотите создать новую миграцию и изменить таблицу следующим образом:

Schema::table('table', function ($table) {
$table->string('column_name')->nullable();
});
0

По вопросам рекламы [email protected]