我正在开发一个有很多迁移的大型项目。我想在表中添加一列,我不想为一个表维护多个迁移。我怎样才能做到这一点?有没有办法迁移:只刷新一次迁移?
答案 0 :(得分:2)
我认为迁移的目的是按顺序运行,因为每个迁移都依赖于之前的迁移。
例如,迁移#1可以创建表,迁移#2可以为该表添加一些额外的字段。如果你试图在没有运行#1的情况下运行迁移#2那么它就会失败。
当您运行artisan migrate时,它将仅运行尚未应用的迁移,除非您使用migrate:refresh,在这种情况下它将重置并重新运行所有迁移。
如果您只是在运行一次迁移时死机 - 您可以暂时从目录中删除不想运行的所有迁移,并运行迁移命令。然后将其余部分移回去。这是一个hacky解决方法,但它可以解决问题。
我认为还有一个替代品可能最适合你:
php artisan migrate --path=/database/migrations/selected/
您想要的迁移位于/ selected /目录(您需要创建)中。
答案 1 :(得分:0)
您可以创建一个新的迁移,即添加新列,即:
Schema::table('users', function (Blueprint $table) {
$table->string('additional_field');
});
并且运行php artisan migrate
这将使用新列更新您的表,而不会干扰其他表。