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