我试图将第二个数据库连接到Symfony2中的项目。首先,我在parameters.yml
中添加了一些参数来创建连接。
然后,我编辑了我的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
circutor3:
driver: pdo_sqlsrv
host: "%database_host_circutor3%"
port: "%database_port_circutor%"
dbname: "%database_name_circutor%"
user: "%database_user_circutor3%"
password: "%database_password_circutor3%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
最后,我尝试使用控制器中的以下代码进行连接:
$em = $this->getDoctrine()->getManager('circutor3');
并且,Symfony2返回错误:
Doctrine ORM经理名为" circutor3"不存在。
circutor3连接到我系统外部的数据库,因此我不需要创建实体或对象。我只需要执行一些SELECT
来获取信息并使用数组存储它。
创建典型的mysqli
连接是解决问题的最佳方法吗?
我不知道如何用Symfony来解决这个问题。
提前谢谢。
答案 0 :(得分:4)
您可以访问控制器中的数据库连接,如下所示:
$connection = $this->getDoctrine()->getConnection('circutor3');
然后使用连接:
$stmt = $connection->prepare($sql);
$stmt->execute();
return $stmt->fetchAll();
希望这个帮助
答案 1 :(得分:2)
根据Symfony文档(http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html),您只定义了一个连接,而不是实体管理器:
您必须为每个连接创建一个entity_manager。
orm:
default_entity_manager: default
entity_managers:
default:
...
circutor3:
connection: circutor3
mappings:
AppBundle: ~