【问题标题】:php artisan migrate all tables except fewphp artisan 迁移所有表,除了少数
【发布时间】:2016-05-28 04:20:14
【问题描述】:

是否可以执行php artisan migrate 以迁移所有表但在database\migrations 下只保留少数迁移文件?

场景是,我们的业务需求需要 2 个 DB。所以很少有迁移文件明确提到第二个数据库。当我为 PHPUnit 创建另一个数据库时,我不需要运行与第二个数据库关联的迁移文件。

【问题讨论】:

  • 您的意思是,在您运行一次所有迁移之后,您想删除一些已经迁移的文件?如果是,为什么?
  • migrate 有 --database 选项,但我还没有尝试过究竟是如何工作的。我认为您最好的选择是创建自己的迁移命令。
  • 我们可以提供 --database 选项来迁移泛型类。但是当文件指定显式连接时它不起作用。

标签: laravel laravel-artisan artisan-migrate


【解决方案1】:

您可以将不希望自动运行的任何迁移放在子文件夹中。例如:

/database
  /migrations
    /db2
      migration_3
    migration_1
    migration_2

现在当你运行时:

php artisan migrate

只会运行database/migrations 目录中的迁移(非递归,因此不会遍历db2 目录),这意味着只会运行migration_1migration_2

要在db2 目录中单独运行迁移,您可以使用--path 选项,如下所示:

php artisan migrate --path=/database/migrations/db2

【讨论】:

    【解决方案2】:

    迁移表的想法是渐进的。

    php artisan migrate 将迁移migrations 文件夹中的所有文件。

    您不能更改它的顺序或要求某些迁移不运行。

    您可以根据需要创建任意数量的迁移文件,并使用它们来删除或添加列或表。

    如果您需要一点破解,您可以在migrations 中创建一个子文件夹并将所有不需要的迁移移到那里,然后运行php artisan migrate。这将避免子文件夹和其中的所有迁移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-30
      • 2015-09-21
      • 2020-01-18
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2019-11-06
      相关资源
      最近更新 更多