在 Laravel 6 中发布模块的数据库迁移文件
1、在 Docker 容器的启动脚本中,如果要强制迁移命令在没有提示的情况下运行,请使用 –force 参数
php artisan migrate --force
2、现阶段存在基于 LARAVEL MODULES 开发的模块,其中存在迁移文件,例:/Modules/ThemeStoreDB/Database/Migrations 。如图1
3、在本地开发环境中,执行模块下的迁移文件,一般是运行命令:php artisan module:migrate ThemeStoreDB 。如图2
PS E:\wwwroot\object> php artisan module:migrate ThemeStoreDB Migrating: 2021_12_06_133918_create_theme_asset_table Migrated: 2021_12_06_133918_create_theme_asset_table (0.11 seconds) Migrating: 2021_12_13_145303_create_theme_asset_version_table Migrated: 2021_12_13_145303_create_theme_asset_version_table (0.1 seconds) Migrating: 2022_05_16_105847_create_theme_installation_table Migrated: 2022_05_16_105847_create_theme_installation_table (0.07 seconds) Migrating: 2022_05_16_134353_create_theme_installation_version_preset_table Migrated: 2022_05_16_134353_create_theme_installation_version_preset_table (0.21 seconds) Migrating: 2022_05_16_172815_create_theme_installation_task_table Migrated: 2022_05_16_172815_create_theme_installation_task_table (0.12 seconds)
4、但是,模块数量过多,也不可能频繁地在启动脚本中增加对应模块的迁移命令。参考:module:publish-migration,发布模块的数据库迁移文件。如图3
PS E:\wwwroot\object> php artisan module:publish-migration ThemeStoreDB
5、目录:/Modules/ThemeStoreDB/Database/Migrations 下的文件已经复制至目录:/database/migrations。如图4
6、这样的话,在启动脚本中的执行迁移的命令就仅需要:php artisan migrate –force,而无需要任何变更。在本地环境中执行,无迁移可执行,符合预期。
PS E:\wwwroot\object> php artisan migrate Nothing to migrate. PS E:\wwwroot\object>
近期评论