首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >回滚Laravel中的一个特定迁移

回滚Laravel中的一个特定迁移
EN

Stack Overflow用户
提问于 2015-05-17 22:29:42
回答 16查看 311.8K关注 0票数 377

我想要

要仅回滚,请执行以下操作:

Rolled back: 2015_05_15_195423_alter_table_web_directories

我跑步

php artisan migrate:rollback,我的3个迁移正在回滚。

代码语言:javascript
复制
Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table

我删除

我的web_directoriescontacts表都是无意的。我永远不希望这种情况发生,如果我只能回滚那个特定的事件,那么这场灾难就永远不会发生。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2015-05-17 22:44:43

如果您查看您的migrations表,您将看到每个迁移都有一个批号。因此,当您回滚时,它会回滚上一批中的每个迁移。

如果您只想回滚最后一次迁移,那么只需将批号递增1即可。然后,下一次运行rollback命令时,它只会回滚一次迁移,因为它处于自己的“批处理”中。

或者,从Laravel 5.3开始,您可以直接运行:

代码语言:javascript
复制
php artisan migrate:rollback --step=1

这将回滚最后一次迁移,而不管它的批号是什么。

票数 291
EN

Stack Overflow用户

发布于 2018-04-03 06:13:51

每次回滚时,您都会得到最后一批迁移。使用命令

代码语言:javascript
复制
php artisan migrate:rollback --step=1
票数 32
EN

Stack Overflow用户

发布于 2015-05-18 21:39:39

如果你不能按照@Martin Bean所说的去做,那么你可以尝试另一个技巧。

创建一个新的迁移,并在up()方法中插入要回滚的迁移的down()方法中的内容,并在down()方法中插入up()方法中的内容。

例如,如果您的原始迁移是这样的

代码语言:javascript
复制
public function up()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->string('name');
    });
}
public function down()
{
    Schema::drop('users');
}

然后在新的迁移文件中执行以下操作

代码语言:javascript
复制
public function up()
{
    Schema::drop('users');
}
public function down()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->string('name');
    });
}

然后运行迁移,它将删除该表。如果您再次想要回它,就回滚它。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30287896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档