【发布时间】:2017-07-30 13:01:34
【问题描述】:
我正在处理一个包含许多迁移的大型项目。我想在表中添加一列,并且不想为一个表维护多个迁移。我怎样才能做到这一点?有什么方法可以迁移:只刷新一次迁移?
【问题讨论】:
我正在处理一个包含许多迁移的大型项目。我想在表中添加一列,并且不想为一个表维护多个迁移。我怎样才能做到这一点?有什么方法可以迁移:只刷新一次迁移?
【问题讨论】:
我认为迁移旨在按顺序运行,因为每个迁移都可能依赖于之前的迁移。
例如,migration#1 可以创建一个表,migration#2 可以向该表添加一些额外的字段。如果您尝试在每次都运行 #1 的情况下运行迁移 #2,那么它将失败。
当您运行 artisan migrate 时,它只会运行尚未应用的迁移,除非您使用 migrate:refresh 在这种情况下,它将重置并重新运行所有迁移。
如果您一心只想运行一个迁移 - 您可以暂时从目录中删除所有不想运行的迁移,然后运行迁移命令。然后将其余部分移回。这是一个 hacky 解决方法,但它可以解决问题。
还有一种我认为可能最适合您的选择:
php artisan migrate --path=/database/migrations/selected/
您想要的迁移位于 /selected/ 目录中(您需要创建该目录)。
【讨论】:
您可以创建一个将添加新列的新迁移,即:
Schema::table('users', function (Blueprint $table) {
$table->string('additional_field');
});
然后运行php artisan migrate
这将使用新列更新您的表格,并且不会干扰其他表格。
【讨论】: