Laravel drop table,无需回滚即可进行迁移

时间:2015-05-23 03:06:15

标签: laravel laravel-5

使用Laravel 5,我已经完成了一些数据库迁移,并意识到我不再需要使用第一轮迁移创建的表。我想摆脱这个表以避免将来出现任何混淆,但显然我还需要阻止重新创建表,如果我重置所有迁移。

我认为最好只删除迁移,所以如果刷新表根本就不会创建。然后可能只是手动删除表。

我的数据库中确实有数据,所以我宁愿不回滚和刷新所有内容,如果我刷新迁移,删除表并将其从重新创建中删除它的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以创建一个具有此功能的新迁移

public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->drop();
    });
}

答案 1 :(得分:0)

在我的脑海中,我看到了两种可以实现此目的的方法。

方法1很长,如果你有50多个表,那就太烦人了。 方法2是干净有效且侵入性较小的方法(我选择了这个)。

方法1

以下是我将采取的解决问题的步骤:

  • 第1步

导出数据库表和数据,以便在出现问题时备份所有内容。

  • 第2步

进入您的迁移目录,找到特定于该表的文件

  • 第3步

在公共函数up()内部插入:

    Schema::table('table_name', function (Blueprint $table) {
          $table->drop();
    });
  • 第4步

进入迁移文件中的每个表并注释掉以下两种方法:

    public function up()

    public function down()
  • 第5步

打开控制台并进入laravel应用程序所在的目录

  • 第6步

运行以下命令:

    php artisan migrate

通过运行上面的命令,表drop方法将激活,所有其他表应保持不变(如果你没有任何外键约束阻止数据库删除表)。 / p>

如果您在该表上有任何外键约束,请将其删除(因为您计划删除该表)。

方法2

  • 第1步

在database \ migrations目录中创建一个文件夹,并将其命名为“passive_rollback”

  • 第2步

只需运行以下命令:

    php artisan migrate:rollback my_table_name_here --path=database/migrations/passive_rollback

上面的步骤将回滚位于您指定路径的单个表。此方法还可用于数据库版本控制和按相关性或部分组织架构。通过laravel,您可以更好地控制您希望使用的数据库部分!