symfony - 使用多个时自动连接特定的 DBAL 连接

标签 symfony doctrine dbal

我正在使用 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/

相关文章:

php - Doctrine DBAL - 事务和插入外部事务

php - 现有 PHP 应用程序需要一个简单的 ORM 或 DBAL

php - Symfony - 属性 "first_name"和方法之一都不存在,并且在类 "Symfony\Component\Form\FormView"中没有公共(public)访问权限

php - 无法下载文件 Symfony 3.4 和 VueJS

php - Doctrine 2 命令行打印 Cygwin 配置

doctrine-orm - 如何将 migrations_paths 传递给 doctrine :migrations:migrate?

php - Doctrine cli 中的多种环境

mysql - 这个 phpBB 的 SQL 有什么问题?

model-view-controller - Symfony2和 View 模型的MVC概念

Symfony2 - 从编译器 channel 访问内核