我正在尝试设置我的symfony以使用两个数据库连接。问题是Symfony不会将实体映射到正确的EntityManager。所以执行一个查询,我必须告诉Symfony它应该使用什么样的经理。
我的配置:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
lookup:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "Lookup"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
MbMyAppBundle: ~
mvibes:
mappings:
MbLookupBundle: ~
connection: mvibes
因此,要从我的查询中查询,我必须这样做:$this->getDoctrine()->getRepository('MbLookupBundle:Country', 'lookup');
相反,我希望我可以省略第二个参数。这样,我的包就会是独立的。项目经理可以决定他将在他的项目中实施什么数据库配置。他只需要确保映射是正确的。
这是如何工作的?如果不可能,使用的映射是什么?
答案 0 :(得分:1)
连接命名时出错:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
# ...
mvibes: #This is the name of the connection
# ...
orm:
auto_generate_proxy_classes: "%kernel.debug%"
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
MbMyAppBundle: ~
mvibes:
mappings:
MbLookupBundle: ~
connection: mvibes #must refre to a connection's name defined above
官方文件:http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html 我写的一篇博文:http://blog.alterphp.com/2011/10/configuration-trick-for-multiple-entity.html