Мне нужно установить динамическое соединение непосредственно перед выполнение действия проверки входа в систему (или в этом действии).
Это потому, что мой объект «Пользователь» находится в разных базах данных в соответствии с URL-адресом. Поэтому я не могу поместить определение динамического соединения в файл config.yml.
Я использую этот метод для установки нужного мне менеджера объектов:
Код: Выделить всё
public function switchConnection($connectionParam=array())
{
$conn = array_merge(
array('host'=>'127.0.0.1', 'port'=>'3306', 'dbName'=>'myDatabaseName', 'user'=>'myUser', 'pass'=>'myPass', 'driver'=>'pdo_mysql', 'connection'=>'default', 'em'=>'default')
, $connectionParam);
$dbalConnectionTo=sprintf('doctrine.dbal.%s_connection', $conn['connection']);
$connection = $this->container->get($dbalConnectionTo);
$connection->close();
$refConn = new \ReflectionObject($connection);
$refParams = $refConn->getProperty('_params');
$refParams->setAccessible('public');
$params = $refParams->getValue($connection);
$params['dbname'] = $conn['dbName'];
$params['user'] = $conn['user'];
$params['host'] = $conn['host'];
$params['port'] = $conn['port'];
$params['password'] = $conn['pass'];
$params['driver'] = $conn['driver'];
$params['charset']='UTF8';
$refParams->setAccessible('private');
$refParams->setValue($connection,$params);
$this->container->get('doctrine')->resetEntityManager($conn['em']);
return;
}
Подробнее здесь: https://stackoverflow.com/questions/132 ... ogin-check
Мобильная версия