小编Jos*_*osh的帖子

symfony2:具有doctrine迁移和schema_filter的多个DB连接/实体管理器

我目前有一个单一的数据库/实体管理器symfony2(2.1)应用程序正常工作,包括doctrine迁移.我正在添加第二个数据库连接+实体管理器,并且无法让doctrine迁移做我想做的事情.

从本质上讲,我希望我的大多数实体都存在于我的第一个"默认"数据库中,并且在我的第二个数据库中有几个新的实体/表 - 然后让学说迁移管理对模式的任何更改.文档似乎暗示您可以在连接上设置'schema_filter'来实现此目的.

(用例是这样的:我们的应用程序有几个安装用于白标经销商,每个经销商都有自己的主数据库.但是,我们正在实施交互式帮助,这将由我们在CMS /博客类型界面中编写并可用,通过第二个数据库,到所有安装.)

到目前为止,我的学说配置看起来像这样(来自app/config/config.yml):

    dbal:
        default:
            driver:   %database_driver%
            host:     %database_host%
            port:     %database_port%
            dbname:   %database_name%
            user:     %database_user%
            password: %database_password%
            charset:  UTF8
            schema_filter: ~^(?!help_)~
        cross_site:
            driver:   %crossite_database_driver%
            host:     %crossite_database_host%
            port:     %crossite_database_port%
            dbname:   %crossite_database_name%
            user:     %crossite_database_user%
            password: %crossite_database_password%
            charset:  UTF8
            schema_filter: ~^help_~

orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager: default
    entity_managers:
        default:
            connection: default
            mappings:
                <most of the bundles>
        help:
            connection: cross_site
            mappings:
                HelpBundle: ~
Run Code Online (Sandbox Code Playgroud)

目的是将大多数实体/表放在"默认"数据库中,但排除任何以"help_"开头的表.相反,第二个数据库应该包含那些以"help_"开头的表.

但是,每当我使用任一实体管理器运行一个学说迁移时,它都会包含所有表,而不管它们的名称如何.

php app/console doctrine:migrations:migrate # includes every table including help_*
php app/console doctrine:migrations:migrate …
Run Code Online (Sandbox Code Playgroud)

schema filter symfony doctrine-migrations

5
推荐指数
1
解决办法
3834
查看次数

标签 统计

doctrine-migrations ×1

filter ×1

schema ×1

symfony ×1