在symfony2中配置多个实体管理器以扩展第三方实体

时间:2014-05-24 19:19:47

标签: symfony doctrine-orm

我试图将Xhprof包与XhGUI结合使用。我的应用程序有两个独立的数据库,一个用于实际的域模型(postgres),另一个用于存储性能分析数据(mysql)。

我已在config.yml中创建了两个连接和实体经理来解释此问题。我现在遇到了映射问题,因为我的两个bundle都有实体扩展第三方包中的实体。但是,基类中的配置/注释并没有被学说所接受。第三方包使用注释进行orm配置,所以在扩展它们的类中,我也选择了注释。

MyCompanyAuthBundle具有扩展FOSOAuthServerBundle捆绑包中的实体的实体。 MyCompanyProfileBundle有一个实体扩展JnsXhprofBundle包中的实体。

现在我必须手动配置mappings中的config.yml部分,我无法弄清楚如何告诉doctrine也使用实体基类注释配置发现在第三方捆绑。

在我开始尝试使用两个连接之前,我只是在orm配置中使用了auto_mapping标志,它在我的单个连接中运行良好。

任何人都知道我在这里做错了什么?

以下是我config.yml的学说部分。

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   "%database_driver%"
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   %database_name%_%kernel.environment%
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8

            xhprof:
                driver:   "%database_driver2%"
                host:     "%database_host2%"
                port:     "%database_port2%"
                dbname:   "%database_name2%"
                user:     "%database_user2%"
                password: "%database_password2%"
                charset:  UTF8

    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    MyCompanyCoreBundle:  ~
                    MyCompanyAuthBundle:
                        type: annotation
            xhprof:
                connection: xhprof
                mappings:
                    MyCompanyProfileBundle: ~
                    JnsXhprofBundle: ~

1 个答案:

答案 0 :(得分:0)

想出来。比我想象的更容易!

只需要添加也有映射的包。

我的工作config.yml

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   "%database_driver%"
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   %database_name%_%kernel.environment%
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8

            xhprof:
                driver:   "%database_driver2%"
                host:     "%database_host2%"
                port:     "%database_port2%"
                dbname:   "%database_name2%"
                user:     "%database_user2%"
                password: "%database_password2%"
                charset:  UTF8

    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    MyCompanyCoreBundle:  ~
                    MyCompanyAuthBundle: ~
                    FOSOAuthServerBundle: ~
            xhprof:
                connection: xhprof
                mappings:
                    MyCompanyProfileBundle: ~
                    JnsXhprofBundle: ~