如何 delete/refresh 在 laravel 中进行特定迁移

How to delete/refresh specific migration in laravel

我正在处理一个包含许多迁移的大型项目。我想在 table 中添加一列,但我不想为一个 table 维护多个迁移。我怎样才能做到这一点?有什么方法可以 migrate:refresh 只进行一次迁移吗?

我认为迁移设计为 运行 按顺序进行,因为每个迁移都可能依赖于较早的迁移。

例如,migration#1 可以创建一个 table,而 migration#2 可以向该 table 添加一些额外的字段。如果您尝试 运行 迁移#2 而没有 运行 #1 那么它将失败。

当您 运行 artisan 迁移时,它只会 运行 尚未应用的迁移,除非您使用 migrate:refresh,在这种情况下它将重置并且re-run 所有迁移。

如果您 dead-set 仅 运行 进行一次迁移 - 您可以暂时删除所有您 不想要 运行 的迁移从目录和 运行 迁移命令。然后把剩下的移回去。这是一个棘手的解决方法,但它可以解决问题。

我认为还有一种选择可能最适合您:

php artisan migrate --path=/database/migrations/selected/

您想要的迁移位于 /selected/ 目录中(您需要创建该目录)。

您可以创建一个将添加新列的新迁移,即:

Schema::table('users', function (Blueprint $table) { $table->string('additional_field'); });

和 运行 php artisan migrate

这将使用新列更新您的 table,并且不会干扰其他 table。