Laravel – 在现有表上添加外键和数据
本教程将介绍Laravel - 在现有表上添加外键和数据的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我有现有的表 objects
与数据.现在我需要添加名为 holdings
的新表,并将对象之间的关系添加到 holdings
表.在迁移文件中,我打印了这个:
$table->foreign('holding_id')->references('id')->on('holdings')->onDelete("NO ACTION");
并在尝试迁移时收到此错误
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update
a child row: a foreign key constraint fails (`kolomnaoffice`.`#sql-f10_126`
CONSTRAINT `objects_holding_id_foreign` FOREIGN KEY (`holding_id`)
REFERENCES `holdings` (`id`) ON DELETE NO ACTION) (SQL: alter table `objects` add constraint
`objects_holding_id_foreign` foreign key (`holding_id`) references `holdings`
(`id`) on delete NO ACTION)
我有正确的数据库结构(两个 InnoDB),字段存在并且具有正确的类型(int).唯一不同的是,objects
表是数据,而holdings
表是新的空的.
推荐答案
holding_id
列应该是unsigned
新建一个迁移文件并迁移,迁移代码应该是这样的:
Schema::table('objects', function (Blueprint $table) {
$table->integer('holding_id')->unsigned()->change();
$table->foreign('holding_id')->references('id')->on('holdings');
});
调用change()
方法改变现有列的结构.
不需要调用onDelete("NO ACTION")
方法.
好了关于Laravel - 在现有表上添加外键和数据的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。