k3progetti/multiple-database

Symfony DoctrineMigrationsMultipleDatabaseBundle

安装: 54

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 0

开放问题: 0

类型:symfony-bundle

v1.2.0 2024-03-04 14:57 UTC

This package is auto-updated.

Last update: 2024-09-04 16:10:25 UTC


README

此包以黑客和肮脏的方式扩展了 DoctrineMigrationsBundle 的功能,以提供为多个实体管理器配置迁移路径的简单方法。

配置

  • 通过运行 composer require avaibooksports/doctrine-migrations-multiple-database-bundle 安装包
  • 转到您的 config/bundles.php 文件并注册包
AvaiBookSports\Bundle\MigrationsMultipleDatabase\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 将覆盖完整的配置文件和所有命令。