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]:违反完整性约束: