我正在开发多租户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确定数据库的最佳方法是什么?
编辑:我为两个不同的连接使用了不同的实体管理器。