1
我尝试在我的symfony3安装中管理2个数据库。 我想有两个连接,而不是两个管理器,因为第二个数据库只是用于加载外部数据,而不是与orm一起使用。Symfony 3使用服务中的第二个数据库
我conf.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
dbsync:
driver: pdo_mysql
host: "%database_sync_host%"
port: "%database_sync_port%"
dbname: "%database_sync_name%"
user: "%database_sync_user%"
password: "%database_sync_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
在控制器我可以用我的第二个数据库的SQL与选择:
...->getManager()->getConnection('dbsync');
但我想在服务中使用它,我不知道如何在这种情况下使用的getConnection( 'dbsync')...
我的服务MajUsers.php
<?php
namespace EntBundle\Service;
use Doctrine\ORM\EntityManager;
use EntBundle\Entity\User\User;
class MajUsers {
private $em;
/**
* @param EntityManager $em
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function runUpdate()
{
$conn = $this->em->getManager('dbsync')->getConnection('dbsync');
$personnels_sync = $conn->fetchAll("SELECT * FROM xxxxx WHERE etat = 1 AND login !='' ORDER BY xxx, yyyyLIMIT 10");
.....
.....
}
}
我service.yml
ent.maj_users:
class: EntBundle\Service\MajUsers
arguments:
- '@doctrine.orm.entity_manager'
我使用EM在我的代码库中的一些,它的工作不错,但的getConnection(“dbsync”)的一部分不能正常工作。
我想,我需要在__construct注入容器(?教义),但我不知道巫婆一个,我所有的测试失败:C/
感谢更新的任何帮助
关闭,但他只需要连接,以便像'@ doctrine.dbal.dbsync_connection' – Cerad
我已经尝试这个解决方案,Xymanek,但它的两个经理和我需要两个连接! – lemairep
您是否尝试过@Cerad建议的操作?我看到你键入暗示的EntityManager,所以我认为你需要那个服务,我的不好 – Xymanek