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