Я пытаюсь создать REST API, который использует несколько баз данных. Мне нужно подключиться к базе данных из значения приходит из токена. Я не могу определить все базы данных в config.yml и parameters.yml, потому что могут быть добавлены новые базы данных. Я хочу, чтобы это было полностью динамичным. Я попробовал что-то вроде ниже.
$connection = $this->container->get('doctrine.dbal.default_connection');
$refConn = new \ReflectionObject($connection);
$refParams = $refConn->getProperty('_params');
$refParams->setAccessible('public');
$params = $refParams->getValue($connection);
$params['dbname'] = $domain;
$refParams->setAccessible('private');
$refParams->setValue($connection, $params);
$this->container->get('doctrine')->resetManager('default');
$em = $this->getDoctrine()->getManager('default');
Когда я "dump ($ em);" он показывает мне базу данных, к которой я хочу подключиться, но когда я выполняю SQL-запрос, он возвращает данные базы данных по умолчанию.
Кто-нибудь делал что-то подобное? Буду благодарен за помощь.
Это полный фрагмент кода. Я еще не настроил среду токенов, но сейчас отправляю ее из заголовков.
public function getUploadsAction ($Request request)
{
$ domain = $ request -> headers -> get ('domain');
$ connection = $ this-> container-> get ('doctrine.dbal.default_connection');
$ refConn = new \ ReflectionObject ($connection);
$ refParams = $ refConn-> getProperty ('_ params');
$ RefParams-> setAccessible ('public');
$ params = $ refParams-> getValue ($ connection);
$ params ['dbname'] = $ domain;
$ refParams-> setAccessible ('private');
$ refParams-> setValue ($ connection, $ params);
$ $this->container->get ('doctrine') -> resetManager ('default');
$ em = $ this-> getDoctrine () -> getManager ('default');
$ sql = 'SELECT * upload WHERE RECNO ='. $ request-> headers-> get ('recno');
$ statement = $ em-> getConnection () -> prepare ($ sql);
$ statement->execute();
$ result = $statement->fetchAll();
return $result;
}