【问题标题】:Laravel On delete Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint failsLaravel 关于删除完整性约束违规:1451 无法删除或更新父行:外键约束失败
【发布时间】:2020-08-10 11:09:10
【问题描述】:

所以我试图创建一个文件夹可以有子文件夹但在删除父文件夹时出现 1451 错误的自我关系

以下是我的 Laravel 迁移代码:

$table->foreign('f_folder_id')->references('id')->on('folders');

如果我没有以正确的方式做事,请告诉我应该使用什么方法。提前谢谢。

(我也在某处读过外键约束的设置,但这是个坏主意,所以我在寻找建议)

【问题讨论】:

    标签: mysql database laravel laravel-migrations


    【解决方案1】:

    您已经为您的子表添加了一个外键,因此当您尝试删除父行时,它会因为另一个表上的相关子行而失败。 所以你有两个选择:

    1 - 在删除父级本身之前以编程方式删除所有子级

    2 - 通过强制 ondelete 级联规则让 RDBMS 代表您执行子项删除。

    $table->foreign('f_folder_id')
                ->references('id')
                ->on('folders')
                ->onDelete('cascade');
    

    修改后,迁移。

    顺便说一句,选项 2 既快捷又简单。

    【讨论】:

    • 无法更新父行怎么办?我已经完全像这样定义了我的迁移,我可以很好地删除,但不能以某种方式编辑我的父行..
    猜你喜欢
    • 2022-09-23
    • 2019-10-24
    • 2021-10-12
    • 1970-01-01
    • 2021-06-14
    • 2018-05-21
    • 1970-01-01
    • 2018-08-13
    • 2019-05-25
    相关资源
    最近更新 更多