Laravel 删除(违反完整性约束)

Posted

技术标签:

【中文标题】Laravel 删除(违反完整性约束)【英文标题】:Laravel Delete (Integrity Constraint Violation) 【发布时间】:2019-01-02 23:12:39 【问题描述】:

我正在尝试在我的控制器上实现删除,但出现此错误:

完整性约束违规:1451 无法删除或更新父行:外键约束失败(`greatsup_wz`.`entryitems`, CONSTRAINT `entryitems_fk_check_entry_id` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`)) (SQL: delete from `greatsup_wz`.`entries` where `id` = 686)

这是我的一段代码:

$entryTable     =   DB::table(config("app.DB_ACCOUNTING").".entryitems")
                    ->where('entryref_id','=',100)->get();
foreach($entryTable as $entryTbl):
  DB::table(config("app.DB_ACCOUNTING").".entries")
  ->where('id','=',$entryTbl->entry_id)->delete(); // this is where my error occurred
endforeach;

我该如何解决?

【问题讨论】:

【参考方案1】:

您添加的约束将阻止数据被删除。您需要更新数据库架构。需要在 entryitems 迁移中添加 onDelete('cascade')

Schema::create('tablename', function (Blueprint $table) 

    $table->integer('columnName')->unsigned();
    $table->foreign('columnName')->references('columnName')->on('relatedTableName')->onDelete('cascade');
);

【讨论】:

以上是关于Laravel 删除(违反完整性约束)的主要内容,如果未能解决你的问题,请参考以下文章

laravel 8 播种,SQLSTATE[23000]:违反完整性约束:

SQLSTATE[23000]:违反完整性约束:在 Laravel 5.2 中

在 laravel 5.2 中使用工厂关系违反完整性约束

ORA-02292: 违反完整约束条件 处理

违反完整性约束:1062空数据库LARAVEL上的重复条目

Laravel 6:违反完整性约束:1452无法添加或更新子行:外键约束失败