我正在使用 Doctrine 2,其中我有多个 DBAL 连接。我在 ORM 中也有多个 EntityManager。
我需要能够以某种方式将特定的 DBAL 连接自动连接到其他 Symfony 3 服务中。
我可以使用 EntityManagerDecorator 自动连接任何 EntitiyManager,但不知道如何对连接执行相同操作。我能够从 EntityManager 获得连接,但我不认为这是要走的路。
最佳答案
您可以为 Doctrine 连接指定包装类,不需要代理类:
#config.yml
doctrine:
dbal:
connections:
default:
wrapper_class: AppBundle\Connections\ConnectionDefault
...
second:
wrapper_class: AppBundle\Connections\ConnectionSecond
...
连接应该扩展
Doctrine\DBAL\Connection
:<?php
namespace AppBundle\Connection;
use Doctrine\DBAL\Connection;
class ConnectionDefault extends Connection
{
}
class ConnectionSecond extends Connection
{
}
并创建服务别名:
#services.yml
services:
...
AppBundle\Connections\ConnectionDefault: '@doctrine.dbal.default_connection'
AppBundle\Connections\ConnectionSecond: '@doctrine.dbal.second_connection'
然后您可以通过键入提示将所需的连接简单地注入(inject)服务:
class MyService {
public function __construct(ConnectionDefault $connection) {...}
}
class MyOtherService {
public function __construct(ConnectionSecond $connection) {...}
}
关于symfony - 使用多个时自动连接特定的 DBAL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235336/