」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何解決 Laravel 中的「無法刪除或更新父行:外鍵約束失敗」錯誤?

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

發佈於2024-11-10
瀏覽:204

How to Solve \

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

在Laravel 中,嘗試刪除帖子時可能會出現一個有趣的錯誤具有相關的喜好。錯誤訊息宣告:

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

分析架構

檢查架構後,很明顯,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:利用模型關係

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

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

透過採用這些解決方案中的任何一個,可以解決有問題的錯誤,允許刪除帖子,無論其喜歡如何地位。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3