Laravel 以递归方式在“应用/数据库/迁移”文件夹上运行迁移

2022-08-30 11:35:26

所以我的迁移文件夹看起来像这样,因为我有几十个表,它使事情井井有条和干净:

migrations/
  create_user_table.php
  relations/
  translations/

我正在尝试刷新所有迁移和种子,但似乎我遇到了一个轻微的打嗝,我不知道工匠命令以递归方式运行迁移(即在和文件夹中运行迁移)。relationstranslations

我尝试过添加,但它吐出了一个错误。有谁知道这个问题的解决方案吗?--path="app/database/migrations/*"


答案 1

现在执行此操作的唯一方法是手动完成所有迁移。也就是说,您必须在每个子文件夹上运行迁移命令:

php artisan migrate --path=/app/database/migrations/relations  
php artisan migrate --path=/app/database/migrations/translations

但是,您可以做的是轻松扩展 artisan 系统以编写您自己的迁移命令,该命令将循环访问迁移文件夹下的所有文件夹,为您创建这些命令并运行它们。

你也可以简单地写一个shell脚本,如果你不想通过工匠来做这件事。

编辑:对于 Laravel >= 5.0,迁移子目录中的迁移文件的正确命令是:

php artisan migrate --path=/database/migrations/relations
php artisan migrate --path=/database/migrations/translations


答案 2

此添加到 AppServiceProvider 中的引导方法

$mainPath = database_path('migrations');
$directories = glob($mainPath . '/*' , GLOB_ONLYDIR);
$paths = array_merge([$mainPath], $directories);

$this->loadMigrationsFrom($paths);

现在您可以使用可以和也php artisan migratephp artisan migrate:back


推荐