Mysql
 sql >> Database >  >> RDS >> Mysql

symfony2 connessione dinamica al database usando la dottrina

Mi sembra che l'uso di Doctrines ODM non sia il modo giusto per affrontare questo problema. Puoi comunque usare Doctrine per connetterti ai database e interrogarli. Ma se non hai classi di entità, l'uso di un gestore di entità sembra inappropriato.

Usa Dottrina per la gestione della connessione

Ecco come creare una connessione a un Database con la dottrina Connection classe:

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

Ora puoi usare $connection come un semplice PDO oggetto:

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

Puoi aggiungere questo codice come servizio per renderlo accessibile ovunque.
Se vuoi connetterti a un database diverso per un dominio diverso puoi utilizzare questo codice per identificare il dominio:

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

Per accedere al dominio con un'azione fai questo:

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