
[英]Laravel Migration: 2 different tables with the same blueprint/structure
[英]Migration tables with different level
当我有具有关系的表(父表和子表)时,我可以一次将它们一起迁移还是需要先迁移子表?
如果您没有外键约束,那么您可以按任何顺序迁移。 但是,如果您确实有外键 (FK),那么它取决于您的方案,那么您也可以从为您的表指定ON UPDATE
和ON DELETE
规则中受益。 请参阅mysql 文档。
您不能一次迁移两个表,代码不会并行处理
并且先迁移孩子会报错
Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1005 Can't create table
database
。child
(errno: 150 "外键约束格式不正确")
所以你必须先迁移父母
例如,假设用户有一只宠物(家养动物)
我们将有users
表和pets
表设置
Schema::create('pets', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->timestamps();
});
如果宠物迁移的文件名是
2013_11_06_151235_create_pets_table.php
users
迁移的文件名是
2014_10_12_000000_create_users_table.php
您会收到上述错误,因此您必须将pets
表迁移文件重命名为晚于users
之一的日期
例如
2015_11_06_151235_create_pets_table.php
因为 Laravel 将尝试创建一个数据库表,其中的列引用表中尚不存在的列
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.