2014-01-25 4 views
0

DoctrineMongoDBBundle을 사용하여 Symfony 2 프로젝트에서 데이터를 관리하고 있습니다. 두 개 이상의 인스턴스를 처리해야하지만 구성하는 데 도움이되지 않았습니다.DoctrineMongoDBBundle을 사용하여 Mongodb 연결을 처리하는 방법은 무엇입니까?

설명서에는 config.yml 파일에 다음 코드를 추가하여 하나의 기본 연결을 구성하는 방법이 설명되어 있습니다.

$dm = $this->get('doctrine_mongodb')->getManager(); 

그것은 잘 작동하지만 난 더 많은 연결을 구성하는 방법과 문서 관리자를 사용하여 처리하는 방법을 찾을 수 없습니다 :

doctrine_mongodb: 
    connections: 
     default: 
      server: mongodb://localhost:27017 
      options: {} 
    default_database: test_database 
    document_managers: 
     default: 
      auto_mapping: true 

그리고

내가 그 코드를 사용하는 문서 관리자를 호출합니다. 나는 그것이 다음과 같은 소스처럼 보일 것이라고 생각하지만 특정 연결을 호출하는 방법을 찾지 못한다.

doctrine_mongodb: 
    connections: 
     default: 
      server: mongodb://localhost:27017 
      options: {} 
     second: 
      server: mongodb://localhost:27018 
      options: {} 
    default_database: test_database 
    document_managers: 
     default: 
      auto_mapping: true 
     second: 
      auto_mapping: true 

감사합니다.

답변

1

이 예제는 번들 config referenceMultiple Connections 섹션에서 다룹니다. 각 연결 W. 서 관리자에는 고유 한 이름이 있어야하며. 서 관리자 구성은 해당 연결 이름을 참조해야합니다. 마지막 비트는 원래 예제에서 누락 된 것입니다. 번들 인용하기 docs :

doctrine_mongodb: 
    default_database: hello_%kernel.environment% 
    default_connection: conn2 
    default_document_manager: dm2 
    metadata_cache_driver: apc 
    connections: 
     conn1: 
      server: mongodb://a.example.com:27017 
     conn2: 
      server: mongodb://b.example.com:27017 
    document_managers: 
     dm1: 
      connection: conn1 
      metadata_cache_driver: xcache 
      mappings: 
       AcmeDemoBundle: ~ 
     dm2: 
      connection: conn2 
      mappings: 
       AcmeHelloBundle: ~ 

혼란을 피하기 위해 연결 및 문서 관리자에 "기본값"이외의 이름을 사용하는 것이 좋습니다. 이제 문서 관리자 이름이 서비스 ID의 일부가됩니다. 위의 구성에 따라 두 번째 연결 및 문서 관리자는 기본 서비스 ID (별칭 : default_connectiondefault_document_manager 참조)로 별칭이 지정됩니다. 문서에서 두 번째 예를 인용하면 구체적인 서비스 ID는 다음과 같습니다.

$conn1 = $container->get('doctrine_mongodb.odm.conn1_connection'); 
$conn2 = $container->get('doctrine_mongodb.odm.conn2_connection'); 
$dm1 = $container->get('doctrine_mongodb.odm.dm1_document_manager'); 
$dm2 = $container->get('doctrine_mongodb.odm.dm2_document_manager'); 
관련 문제