配置Symfony以使用多个mongodb数据库

时间:2014-07-23 09:31:59

标签: php mongodb symfony doctrine-odm

在我的应用程序中,我必须使用两个不同的MongoDb数据库。 所以我按照以下link中的说明操作。这是我的app / config.yml文件的一部分

doctrine_mongodb:
    default_database: music_store_database
    default_connection: conn1
    default_document_manager: dm1
    connections:
       conn1:
          server: mongodb://localhost:27017
          options:
             connect: true
             db: music_store_database
      conn2:
         server: mongodb://localhost:27017
         options:
            connect: true
            db: another_database
    document_managers:
        dm1:
            connection: conn1
            mappings:
                MyfirstBundle: ~
        dm2:
            connection: conn2
            mappings:
                MySecondBundle: ~  

现在,如果我执行./app/console缓存:clear --env = prod或其他任何我得到此问题:

  [Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]                                                                  

  The service "doctrine_mongodb.odm.conn1_connection" has a dependency on a non-         existent service "doctrine_mongodb.odm.conn1_configuration".
  The service "doctrine_mongodb.odm.conn1_connection" has a dependency on a non-          existent service "doctrine_mongodb.odm.conn1_configuration". 

我被困住了,我没有找到任何解决方法。所以我不知道我做错了什么?什么是配置Symfony使用两个MongoDb数据库的正确方法

1 个答案:

答案 0 :(得分:4)

我建议您将 dm1 dm2 更改为 conn1 conn2 。我重现了你的问题,只是通过这个小小的改变,我就让它成功了。

doctrine_mongodb:
    default_database: music_store_database
    default_connection: conn1
    default_document_manager: conn1
    connections:
        conn1:
            server: mongodb://localhost:27017
            options:
                connect: true
                db: music_store_database
        conn2:
            server: mongodb://localhost:27017
            options:
                connect: true
                db: another_database
    document_managers:
        conn1:
            connection: conn1
            mappings:
                MyFirstBundle: ~
        conn2:
            connection: conn2
            mappings:
                MySecondBundle: ~