avaibooksports / doctrine-migrations-multiple-database-bundle
此包已被废弃,不再维护。未建议替代包。
Symfony DoctrineMigrationsMultipleDatabaseBundle
0.4.1
2023-06-25 10:24 UTC
Requires
- php: >=7.2
- doctrine/doctrine-bundle: ~1.0|~2.0
- doctrine/doctrine-migrations-bundle: ^3
- doctrine/migrations: ~3.0
- symfony/framework-bundle: ~3.4|~4.0|~5.0|~6.0
Requires (Dev)
- doctrine/orm: ^2.6
- friendsofphp/php-cs-fixer: ^2.16
- phpstan/phpstan: ^0.12.48
- phpstan/phpstan-strict-rules: ^0.12.5
- phpstan/phpstan-symfony: ^0.12.8
README
此包通过一种投机取巧且不严谨的方式扩展了DoctrineMigrationsBundle的功能,以提供一种方便配置多个实体管理器迁移路径的方法。
配置
- 通过运行
composer require avaibooksports/doctrine-migrations-multiple-database-bundle
安装此包 - 前往你的
config/bundles.php
文件并注册此包
AvaiBookSports\Bundle\MigrationsMutlipleDatabase\DoctrineMigrationsMultipleDatabaseBundle::class => ['all' => true],
- 最后,在
config/packages/
目录下创建一个名为doctrine_migrations_multiple_database.yaml
的文件,并按照以下示例进行配置
doctrine_migrations_multiple_database: entity_managers: default: migrations_paths: DoctrineMigrations\Main: '%kernel.project_dir%/migrations/Main' geonames: migrations_paths: DoctrineMigrations\Geonames: '%kernel.project_dir%/migrations/Geonames'
- 你可以保持你的
doctirne_migrations.yaml
文件不变。未映射的命令将回退到该配置,如果你需要禁用此包,一切将照常工作。
用法
只需像往常一样调用相同的命令,使用相同的参数。请参阅支持的命令
如果你为特定的实体管理器运行一个命令,可以添加选项--em=example
如果你调用任何支持的命令,它们将像往常一样工作,遍历所有定义的配置。
对于具有--namespace
选项的命令,你必须始终提供正确的实体管理器。否则,它将遍历每个实体管理器,并最终失败。如果你想建议更好的工作流程,请打开问题!
支持的配置
目前,除了connection
和em
之外的所有配置参数都应该工作,因为我们已经指定了我们想要连接的实体管理器。
这是DoctrineMigrationsBundle的示例配置,翻译成此包
# config/packages/doctrine_migrations_multiple_database.yaml doctrine_migrations_multiple_database: entity_managers: default: # List of namespace/path pairs to search for migrations, at least one required migrations_paths: 'App\Migrations': 'src/App' 'AnotherApp\Migrations': '/path/to/other/migrations' 'SomeBundle\Migrations': '@SomeBundle/Migrations' # List of additional migration classes to be loaded, optional migrations: - 'App\Migrations\Version123' - 'App\Migrations\Version123' storage: # Default (SQL table) metadata storage configuration table_storage: table_name: 'doctrine_migration_versions' version_column_name: 'version' version_column_length: 1024 executed_at_column_name: 'executed_at' execution_time_column_name: 'execution_time' # Possible values: "BY_YEAR", "BY_YEAR_AND_MONTH", false organize_migrations: false # Path to your custom migrations template custom_template: ~ # Run all migrations in a transaction. all_or_nothing: false # Adds an extra check in the generated migrations to ensure that is executed on the same database type. check_database_platform: true services: # Custom migration sorting service id 'Doctrine\Migrations\Version\Comparator': ~ # Custom migration classes factory 'Doctrine\Migrations\Version\MigrationFactory': ~ factories: # Custom migration sorting service id via callables (MyCallableFactory must be a callable) 'Doctrine\Migrations\Version\Comparator': 'MyCallableFactory'
支持的命令
doctrine:migrations:current
doctrine:migrations:diff
doctrine:migrations:dump-schema
doctrine:migrations:execute
doctrine:migrations:generate
doctrine:migrations:latest
doctrine:migrations:list
doctrine:migrations:migrate
doctrine:migrations:rollup
doctrine:migrations:status
doctrine:migrations:sync-metadata-storage
doctrine:migrations:up-to-date
doctrine:migrations:version
陷阱
此包正在积极开发以满足我们工作流程中一个非常特定的场景,但我们希望与更多有此特定需求的人分享此解决方案。
由于我们基于YAML文件进行配置,因此目前尚未测试XML和PHP格式。如果您在配置此包时遇到任何问题,我们非常希望得到反馈。单元测试迟早会到来。
此外,我们只部分支持配置参数,并非所有命令都进行了映射。
所有标记为0.x
的版本都将受到这些陷阱的影响,而1.0
版本将涵盖完整的配置文件和所有命令。