sql >> Base de Datos >  >> RDS >> Mysql

conexión de base de datos dinámica symfony2 usando la doctrina

Me parece que usar Doctrines ODM no es la forma correcta de abordar esto. Todavía puedes usar Doctrine para conectarte a bases de datos y consultarlas. Pero si no tiene clases de entidades, el uso de un administrador de entidades parece inapropiado.

Usar Doctrine para el manejo de conexiones

Así es como se crea una conexión a una base de datos con la doctrina Connection clase:

/** @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))
);

Ahora puedes usar $connection como un simple PDO objeto:

$connection->executeQuery('SELECT * FROM your_table');

Podría agregar este código como un servicio para que sea accesible en todas partes.
Si desea conectarse a una base de datos diferente para un dominio diferente, puede usar este código para identificar el dominio:

$this->getRequest()->getHost();

Para acceder al dominio en una acción haz esto:

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();
}