Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

conexão de banco de dados dinâmico symfony2 usando doutrina


Parece-me que usar o Doctrines ODM não é a maneira correta de abordar isso. Você ainda pode usar o Doctrine para se conectar a bancos de dados e consultá-los. Mas se você não tiver classes de entidade, o uso de um gerenciador de entidade parece ser inadequado.

Use o Doctrine para manipulação de conexões


Aqui está como você cria uma conexão com um banco de dados com a doutrina Connection aula:
/** @var \Doctrine\Bundle\DoctrineBundle\ConnectionFactory $connectionFactory */
$connectionFactory = $this->getContainer()->get('doctrine.dbal.connection_factory');
$connection = $connectionFactory->createConnection(
    array('pdo' => new \PDO("mysql:host=$hostname;dbname=$dbname", $username, $password))
);

Agora você pode usar $connection como um simples PDO objeto:
$connection->executeQuery('SELECT * FROM your_table');

Você pode adicionar este código como um serviço para torná-lo acessível em qualquer lugar.
Se você quiser se conectar a um banco de dados diferente para um domínio diferente, você pode usar este código para identificar o domínio:
$this->getRequest()->getHost();

Para acessar o domínio em uma ação faça isso:
public function yourAction(Request $request, /* ... */)
{
    // the Controller extends the Container. So need to get it here:
    $connectionFactory = $this->get('doctrine.dbal.connection_factory');

    // also access the domain like this:
    $domain = $request->getHost();
}