2016-07-05 113 views
3

我试图将第二个数据库连接到Symfony2中的项目。首先,我加入了parameters.yml一些参数来创建连接。如何使用Symfony2创建第二个数据库连接?

然后,我编辑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返回:

名为“circutor3”的Doctrine ORM管理器不存在。

circutor3连接到我的系统外部的数据库,所以我不需要创建实体或对象。我只需要执行一些SELECT来获取信息并使用数组存储它。

正在创建一个典型的mysqli连接解决我的问题的最佳途径? 我不知道如何用Symfony解决这个问题。 预先感谢您。

回答

4

,你可以访问如下控制器数据库连接:

$connection = $this->getDoctrine()->getConnection('circutor3'); 

然后使用该连接为:

$stmt = $connection->prepare($sql); 
$stmt->execute(); 
return $stmt->fetchAll(); 

一些帮助herehere

希望这个帮助

+0

嗨@IsaacBosca欢迎您! – Matteo

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: ~ 
+1

谢谢你的回答,但我只需要执行一些查询,所以我只需要创建连接,而不是一个理财经理。无论如何,我欣赏你的回复:) –

相关问题