dev/doctrine.yml
您可以创建一个文件来声明三个实体管理器(每个数据库引擎一个),而不是在 dev 中仅使用 sqllite,如文档中所述。当然,您只能在开发文件中执行此操作。不要更改您的生产配置文件。
然后,您创建一个 env 变量来指定要在 dev 中使用的默认 orm:
# config/packages/dev/doctrine.yaml
doctrine:
orm:
default_entity_manager: '%env(my_current_orm)%'
# ...
在这一步,您现在只能通过更改环境变量来更改数据库服务器/引擎。
基于这个答案,您可以doctrine_migration.yaml
为每个数据库引擎创建一个文件。在这些文件中,您指定不同的子目录来存储迁移文件。
#example for mssql engine
doctrine_migrations:
dir_name: '%kernel.project_dir%/migrations/mssql'
# namespace is arbitrary but should be different from App\Migrations
# as migrations classes should NOT be autoloaded
namespace: DoctrineMigrations/MsSql/
在这一步,您现在可以为每个数据库引擎启动迁移命令。
symfony console doctrine:migrations:status --em=mssql \
--configuration=src/config/packages/dev/migrations/mssql.yml
如您所见,对于迁移,我没有使用环境变量。我手动指定默认 orm--em=xxxx
并指定配置文件。我在一个旧项目中使用了这个,但我认为现在可以使用doctrine_migration.yaml
文件中的环境变量来优化配置并且只有一个文件。
编辑:(我记得我已经更新了模块加载器以避免多次加载迁移配置文件,您可能必须将非sqlite教义_迁移配置文件移动到另一个目录而不是通常的目录)