无法删除或更新具有外键约束问题的帖子
尝试删除具有关联点赞的帖子时会出现此问题,导致错误:“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中文网其他相关文章!