У меня есть динамический элемент формы (скажем, названия книг), который пользователь может добавить или удалить в представлении. Создание это бриз, потому что все модели книг новые, когда в контроллер поступает запрос на сохранение в базу данных. В течение обновление, если все модели книг остались без изменений, добавлены модифицированные или новые, я могу выполнить задачу с updateOrCreate
где все три случая удовлетворены.
Проблема теперь в том, когда пользователь выбирает удалить книгу в представлении; Laravel пытается сохранить удаленную модель:
SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец имя_ столбца не может быть пустым
Есть updateCreateOrDelete
метод или подобное для этого? Я не хочу удалять все книги в БД и заново создавать их, потому что это лениво и не рекомендуется, если в системе есть система аудита.
В основном у меня есть массив входов, которые могут быть добавлены или удалены:
n
добавляются, а затем создать эти новые n
ценности;m
удаляются, затем удалите эти m
значения из БДВы должны заботиться о своих ограничениях. Laravel не удалит вашу модель, если что-то зависит от нее. Подумайте об использовании удаления на каскаде в вашей миграции или позвольте вашей зависимости обнуляться.
Ошибка, которую вы получаете, в частности, потому что ваш столбец не обнуляемый.
Чтобы это исправить, вы захотите создать новую миграцию и изменить таблицу следующим образом:
Schema::table('table', function ($table) {
$table->string('column_name')->nullable();
});