不同级别的迁移表

Migration tables with different level

当我有 table 关系(parent 和 child table)时,我可以立即将它们一起迁移还是我需要迁移 child第一?

如果您没有外键约束,那么您可以按任意顺序迁移。但是,如果您确实有外键 (FK),那么它取决于您的方案,那么您也可以从为表指定 ON UPDATEON DELETE 规则中受益。请参阅 mysql docs

您不能一次迁移两个 table,代码不会 运行 并行处理

而且先迁移子进程会报错

Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1005 Can't create table database.child (errno: 150 "Foreign key constraint is incorrectly formed")

所以你必须先迁移父级

例如,假设用户有一只宠物(家养动物)

我们会有 users table 和 pets table 设置

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 table 迁移文件重命名为晚于 users

的日期

例如

2015_11_06_151235_create_pets_table.php

因为 Laravel 将尝试创建一个数据库 table,其中一列引用 table 中尚不存在的列

希望对您有所帮助