我想要的

仅回退:

回滚: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')

就像这样

最好使用刷新迁移

您可以通过回滚和重新迁移有限数量的迁移 为刷新命令提供step选项。例如, 以下命令将回滚并重新迁移最后两次迁移:

php artisan migrate:refresh --step=2

否则使用回滚迁移

通过提供该步骤,可以回滚有限数量的迁移 选项。例如,下面的命令 将回滚最后三次迁移:

php artisan migrate:rollback --step=3

有关迁移的详细信息,请参见

现在回答这个问题可能有点晚了,但我觉得这里有一个非常好的、干净和有效的方法。我会尽量详细的。

在创建迁移之前,创建不同的目录,如下所示:

    database
       | 
       migrations
            |
            batch_1
            batch_2
            batch_3

然后,在创建迁移时运行以下命令(以表为例):

     php artisan make:migration alter_table_web_directories --path=database/migrations/batch_1

or

     php artisan make:migration alter_table_web_directories --path=database/migrations/batch_2

or

     php artisan make:migration alter_table_web_directories --path=database/migrations/batch_3

上面的命令将迁移文件置于给定的目录路径中。然后,您可以简单地运行以下命令通过指定的目录迁移文件。

    php artisan migrate alter_table_web_directories --path=database/migrations/batch_1

*注意:您可以将batch_1更改为batch_2或batch_3或任何您存储迁移文件的文件夹名称。只要它仍然在database/migrations目录或某个指定的目录中。

接下来,如果你需要回滚特定的迁移,你可以批量回滚,如下所示:

    php artisan migrate:rollback --step=1
                    or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_1

or

    php artisan migrate:rollback --step=2
                    or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_2

    php artisan migrate:rollback --step=3
                    or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_3

使用这些技术将使您能够更灵活地控制数据库以及对模式的任何修改。

你可以使用

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

这将删除特定的迁移。如果文件有外键依赖,我希望你使用drop方法。对于这些情况,请尝试创建一个新的迁移,并在需要时删除foreign。

如果您想修改原始迁移文件并再次迁移它,您可以使用这个包进行迁移。(适用于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