Laravel 递归地在“app/database/migrations”文件夹上运行迁移

新手上路,请多包涵

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

 migrations/
  create_user_table.php
  relations/
  translations/

我正在尝试刷新所有迁移和种子,但似乎我遇到了一个小问题,我不知道 artisan 命令递归运行迁移(即在 relationstranslations 文件夹)。

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

原文由 tiffanyhwang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 494
2 个回答

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

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

但是,您可以轻松地扩展 artisan 系统以编写您自己的 migrate 命令,该命令将遍历 migrations 文件夹下的所有文件夹,为您创建这些命令并运行它们。

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

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

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

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

原文由 automaticAllDramatic 发布,翻译遵循 CC BY-SA 3.0 许可协议

这个添加到 AppServiceProvider 中的 boot 方法

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

$this->loadMigrationsFrom($paths);

现在您可以使用 php artisan migrate 以及 php artisan migrate:back

原文由 Vinco Velky 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏