我正在使用DoctrineMongoDBBundle管理数据的Symfony 2项目。 我需要处理两个或更多实例,但我没有找到任何帮助来配置。
该文档说明了如何通过在config.yml文件中添加以下代码来配置一个默认连接。
doctrine_mongodb:
connections:
default:
server: mongodb://localhost:27017
options: {}
default_database: test_database
document_managers:
default:
auto_mapping: true
要调用文档管理器,我使用了该代码:
$dm = $this->get('doctrine_mongodb')->getManager();
它运行良好,但我找不到如何使用文档管理器配置更多连接以及如何处理。我认为它应该看起来像以下来源,但我找不到如何调用特定的连接。
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
有什么想法吗?!
谢谢!
答案 0 :(得分:1)
此示例包含在捆绑包Multiple Connections的config reference部分中。每个连接和文档管理器都应具有唯一的名称,然后文档管理器配置应引用相应的连接名称。我相信最后一点是原始示例中缺少的内容。引用捆绑文档:
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_connection
和default_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');