Symfony 4:即时更改数据库名称

时间:2019-09-20 11:15:14

标签: php symfony symfony4

我正在开发多租户Symfony应用程序。我能够为每个租户成功创建多个数据库。但是我在努力如何动态地选择数据库。

可以从URL确定数据库的名称。

我已经为我的连接添加了一个包装器类,

            my_connection_type:
                driver: 'pdo_mysql'
                server_version: '5.7'
                charset: utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
                url: '%env(resolve:DATABASE_URL)%'
                wrapper_class: App\Services\MyConnectionManager

连接类的实现如下所示,

<?php

namespace App\Services;

use Doctrine\Common\EventManager;
use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Driver;

class MyConnectionManager extends Connection {

  public function __construct(array $params, Driver $driver, Configuration $config = null, EventManager $eventManager = null) {
    parent::__construct($params, $driver, $config, $eventManager);
  }
}

我已经尝试实现onKernelRequest侦听器,但是在构造连接类之后才执行。

从URL确定数据库的最佳方法是什么?

编辑:我为两个不同的连接使用了不同的实体管理器。

0 个答案:

没有答案