如何解決 Laravel 中的「無法刪除或更新父行:外鍵約束失敗」錯誤?

Patricia Arquette
發布: 2024-10-25 11:37:02
原創
681 人瀏覽過

How to Solve

Laravel 錯誤:「無法刪除或更新父行:外鍵約束失敗」

在Laravel 中,嘗試刪除貼文時可能會出現有趣的錯誤具有相關的喜好。錯誤訊息聲明:

「SQLSTATE[23000]:違反完整性限制:1451 無法刪除或更新父行:外鍵約束失敗(eliapi8.likes,CONSTRAINT likes_post_id_foreign FOREIGN KEY (post_id) REFERENCES posts ( OREid )"

分析架構

檢查架構後,很明顯,likes 表的post_id 欄位上存在外鍵約束。如果存在任何關聯的同類記錄,此約束可防止刪除貼文記錄。

建議的解決方案

解決方案1:利用onDelete('cascade')

在likes表的遷移文件中引入onDelete('cascade')提供了一個解決方案。透過使用此指令,當刪除貼文記錄時,所有對應的類似記錄都會自動刪除:

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

解決方案2:利用模型關係

如果貼文模型與Like 模型保持關係,可以採用以下方法:

  1. 使用$post->likes()->get() 取得關聯的Likes。
  2. 使用 $post->likes()->delete() 刪除檢索到的讚。
  3. 最後,使用 $post->delete() 刪除貼文本身。

透過採用這些解決方案中的任何一個,都可以解決有問題的錯誤,允許貼文被刪除,無論其喜歡狀態如何。

以上是如何解決 Laravel 中的「無法刪除或更新父行:外鍵約束失敗」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!