我想要的

仅回退:

回滚:2015_05_15_195423_alter_table_web_directories


我跑

PHP artisan migrate:rollback,我的3个迁移都在回滚。

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_directory和我的联系人表都是无意的。我不希望发生这种情况,如果我只能回滚特定的一个,这种灾难就永远不会发生。


当前回答

逐个迁移表。

将需要回退的迁移批号修改为最高。

运行迁移:回滚。

这可能不是处理大型项目的最佳方式。

其他回答

INSERT INTO homestead.bb_migrations (`migration`, `batch`)  VALUES ('2016_01_21_064436_create_victory_point_balance_table', '2')

就像这样

如果您想修改原始迁移文件并再次迁移它,您可以使用这个包进行迁移。(适用于Laravel 5.4或以上版本)

首先,在你的Laravel项目中安装包:

composer require caloskao/migrate-specific

在app/Console/Kernel.php中注册命令:

protected $commands = [
    \CalosKao\MigrateSpecific::class
];

现在,运行这个命令来迁移文件

php artisan migrate:specific database/migrations/table.php

只回滚特定的迁移非常容易。 由于命令php artisan migrate:rollback,撤销上次数据库迁移, 迁移执行的顺序存储在迁移表中的批处理字段中。

您可以编辑要回滚的迁移的批处理值,并将其设置为较高的值。 然后你可以用一个简单的回滚迁移:

php artisan migrate:rollback

在编辑相同的迁移之后,可以使用简单的

php artisan migrate

注意:如果两个或多个迁移具有相同的更高值,它们将同时回滚。

如果你不能做到@Martin Bean告诉你的,那么你可以尝试另一个技巧。

创建一个新的迁移,在该文件上,在up()方法中插入你想要回滚的迁移的down()方法中的内容,在down()方法中插入up()方法中的内容。

例如,如果你最初的迁移是这样的

public function up()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->string('name');
    });
}
public function down()
{
    Schema::drop('users');
}

然后在新的迁移文件中这样做

public function up()
{
    Schema::drop('users');
}
public function down()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->string('name');
    });
}

然后运行migrate,它会删除这个表。 如果你想要回滚它。

php artisan migrate:rollback --path=/database/migrations/0000_00_00_0000_create_something_table.php