В 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: Использование взаимосвязей модели
Если модель публикации поддерживает связь с моделью лайков, можно использовать следующий подход:
Приняв любое из этих решений, проблемную ошибку можно устранить, позволяя удалять сообщения независимо от их типа. статус.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3