Laravel При удалении нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 27 апреля 2020

Поэтому я пытаюсь создать собственные отношения, в которых папка может иметь дочерние папки, но при удалении родительской папки я получаю 1451 ошибку

Ниже приведен мой Laravel код миграции:

$table->foreign('f_folder_id')->references('id')->on('folders');

скажите мне, если я не делаю это правильно, чем какой подход я должен использовать. Спасибо заранее.

(также я где-то читал, что установка ограничения внешнего ключа сделает это, но это плохая идея, поэтому я ищу совет)

1 Ответ

0 голосов
/ 27 апреля 2020

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

1 - программно удалить все дочерние элементы перед удалением самого родителя.

2 - разрешить СУБД выполнять удаление дочерних элементов от вашего имени, сообщив правило каскадирования ondelete.

$table->foreign('f_folder_id')
            ->references('id')
            ->on('folders')
            ->onDelete('cascade');

после этой модификации мигрируйте.

, как вариант 2, быстрый и легкий.

...