是否可以php artisan migrate
以迁移所有表的方式执行,但只保留几个迁移文件database\migrations
?
场景是,我们的业务需求需要 2 个 DB。所以很少有迁移文件明确提到第二个数据库。当我为 PHPUnit 创建另一个数据库时,我不需要运行与第二个数据库关联的迁移文件。
是否可以php artisan migrate
以迁移所有表的方式执行,但只保留几个迁移文件database\migrations
?
场景是,我们的业务需求需要 2 个 DB。所以很少有迁移文件明确提到第二个数据库。当我为 PHPUnit 创建另一个数据库时,我不需要运行与第二个数据库关联的迁移文件。
您可以将不希望自动运行的任何迁移放在子文件夹中。例如:
/database
/migrations
/db2
migration_3
migration_1
migration_2
现在当你运行时:
php artisan migrate
只会运行目录中的迁移database/migrations
(非递归,因此db2
不会遍历目录),仅表示migration_1
并且migration_2
将运行。
要单独在目录中运行迁移,db2
您可以使用如下--path
选项:
php artisan migrate --path=/database/migrations/db2
迁移表的想法是渐进的。
php artisan migrate
将迁移文件migrations
夹中的所有文件。
您不能更改它的顺序或要求某些迁移不要运行。
您可以根据需要创建任意数量的迁移文件,并使用它们来删除或添加列或表。
如果您需要一点黑客攻击,您可以在其中创建一个子文件夹migrations
并将所有不需要的迁移移到那里,然后运行php artisan migrate
. 这将避免子文件夹和其中的所有迁移。