«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как решить ошибку «Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа» в Laravel?

Как решить ошибку «Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа» в Laravel?

Опубликовано 10 ноября 2024 г.
Просматривать:420

How to Solve \

Ошибка Laravel: «Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа»

В Laravel при попытке удалить сообщение может возникнуть интригующая ошибка который имеет связанные лайки. В сообщении об ошибке говорится:

"SQLSTATE[23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено (eliapi8.likes, CONSTRAINT Likes_post_id_foreign FOREIGN KEY (post_id) REFERENCES messages ( id))"

Анализ схемы

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

Предлагаемые решения

Решение 1. Используйте onDelete('cascade')

Введение onDelete('cascade') в файле миграции таблицы лайков обеспечивает решение. При использовании этой директивы при удалении записи сообщения все соответствующие подобные записи автоматически удаляются:

Schema::create('likes', function (Blueprint $table) {
    $table->integer('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});

Решение 2: Использование взаимосвязей модели

Если модель публикации поддерживает связь с моделью лайков, можно использовать следующий подход:

  1. Извлеките связанные лайки, используя $post->likes()->get().
  2. Удалите полученные лайки, используя $post->likes()->delete().
  3. Наконец, удалите само сообщение с помощью $post->delete().

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3