Mysql
 sql >> Base de données >  >> RDS >> Mysql

connexion à la base de données dynamique symfony2 à l'aide de doctrine

Il me semble que l'utilisation de Doctrines ODM n'est pas la bonne façon d'aborder cela. Vous pouvez toujours utiliser Doctrine pour vous connecter aux bases de données et les interroger. Mais si vous n'avez pas de classes d'entités, l'utilisation d'un gestionnaire d'entités semble inappropriée.

Utiliser Doctrine pour la gestion des connexions

Voici comment créer une connexion à une Base de données avec la doctrine 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))
);

Vous pouvez maintenant utiliser $connection comme un simple PDO objet :

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

Vous pouvez ajouter ce code en tant que service pour le rendre accessible partout.
Si vous souhaitez vous connecter à une base de données différente pour un domaine différent, vous pouvez utiliser ce code pour identifier le domaine :

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

Pour accéder au domaine dans une action faites ceci :

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