使用Doctrine ODM和Symfony2的两个连接

时间:2014-05-05 14:57:25

标签: symfony doctrine connection odm

我的问题是我已经配置了两个这样的文档管理器:

doctrine_mongodb:
    document_managers:
        video:
            connection: video
            auto_mapping: true
        stats:
            connection: stats
            auto_mapping: true
    connections:
        video:
            server: mongodb://mongo0:27017,mongo1:27017
            options:
                connect: true
                replicaSet: true
                slaveOkay: true
        stats:
            server: mongodb://mongo2:27017,mongo3:27017
            options:
                connect: true
                replicaSet: true
                slaveOkay: true
    default_document_manager: video
    default_connection: video
    default_database: my_database

我对两个数据库都有相同的名称,当我加载页面时,似乎一切正常(加载我的页面我只使用'视频'文档管理器)。但是,如果我使用'统计数据'文件管理员之后,symfony似乎疯了。

我将文档管理器注入这样的服务:

stats_service:
    class: %stats_service.class%
    arguments: 
      - @doctrine_mongodb.odm.stats_document_manager
video_service:
    class: %video_service.class%
    arguments: 
      - @doctrine_mongodb.odm.video_document_manager

我不知道为什么,但似乎每次我进行查询时,symfony会随机使用其中一个连接,而不是注入文档管理器的连接。

请帮忙!

由于

2 个答案:

答案 0 :(得分:1)

确定。我终于解决了我的问题。我有两个具有相同名称的副本集,所有问题都来自那里。 为了解决我改变了其中一个副本集的名称和属性" replicaSet"配置:

doctrine_mongodb:
    document_managers:
        video:
            connection: video
            auto_mapping: true
        stats:
            connection: stats
            auto_mapping: true
    connections:
        video:
            server: mongodb://mongo0:27017,mongo1:27017
            options:
                connect: true
                replicaSet: videoReplicaset
                slaveOkay: true
        stats:
            server: mongodb://mongo2:27017,mongo3:27017
            options:
                connect: true
                replicaSet: statsReplicaset
                slaveOkay: true
    default_document_manager: video
    default_connection: video
    default_database: my_database

答案 1 :(得分:-1)

发现了一篇有趣的文章,建议明确设置here