無法刪除或更新具有外鍵約束問題的貼文
嘗試刪除具有關聯點讚的貼文時會出現此問題,導致錯誤:「SQLSTATE[23000]:違反完整性限制:1451 無法刪除或更新父行...」
問題原因
The提供的Post 和Like模式在兩個表之間建立外鍵約束,其中Like 表中的post_id 引用Posts 表中的id。當刪除帶有連結點讚的貼文時,它違反了此約束,因為刪除該貼文會在讚表中留下孤立的讚。
解決方案選項 1:onDelete('cascade')
一個解決方案是在Like遷移檔案中使用onDelete('cascade')。這指定當從 Posts 表中刪除記錄時,Like 表中的所有對應記錄也應被刪除。
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
解決方案2:刪除相關記錄
或者,如果您定義了從Post 模型到Like 模型的關係,您可以在刪除帖子本身之前刪除關聯的Like:
$post->likes()->delete(); $post->delete();
透過實作以下任一解決方案,您可以解決外鍵約束錯誤並成功刪除具有關聯點讚的貼文。
以上是刪除關聯點讚的貼文時如何處理外鍵約束問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!