我尝试使用symfony 3.4构建一个访问两个不同数据库的应用程序。
https://symfony.com/doc/3.4/doctrine/multiple_entity_managers.html
在本文档中,我看到我必须像这样配置我的config.yml:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
employeedb:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name2%'
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:
AppBundle: ~
employeedb:
connection: employeedb
mappings:
EmployeeBundle: ~
我为EmployeeBundle生成一个seccond包。 现在,如果我尝试使用简单查询从第二个数据库获取值,它可以正常工作:
$em = $this->getDoctrine()->getManager('employeedb'); <br/>
$RAW_QUERY = "SELECT * FROM employee";
如果我尝试使用这样的学说,我会收到错误(ORMException):
$employees = $this->getDoctrine()
->getRepository('EmployeeBundle:Employee')
->findAll();
未知实体名称空间别名'EmployeeBundle'。
我的配置有什么问题?我应该在entity_manager employeedb中添加一些内容吗?
答案 0 :(得分:0)
解决方案是在doctrine命令中提供新entitymanager的名称:
$results = $this->getDoctrine()
->getManager('employeedb')
->getRepository('EmployeeBundle:Employee')
->findAll();