avaibooksports/doctrine-migrations-multiple-database-bundle

此包已被废弃,不再维护。未建议替代包。

Symfony DoctrineMigrationsMultipleDatabaseBundle

0.4.1 2023-06-25 10:24 UTC

This package is auto-updated.

Last update: 2024-03-19 18:55:53 UTC


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选项的命令,你必须始终提供正确的实体管理器。否则,它将遍历每个实体管理器,并最终失败。如果你想建议更好的工作流程,请打开问题

支持的配置

目前,除了connectionem之外的所有配置参数都应该工作,因为我们已经指定了我们想要连接的实体管理器。

这是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版本将涵盖完整的配置文件和所有命令。