Es scheint mir, dass die Verwendung von Doctrines ODM nicht der richtige Weg ist, dies anzugehen. Sie können Doctrine weiterhin verwenden, um eine Verbindung zu Datenbanken herzustellen und diese abzufragen. Aber wenn Sie keine Entity-Klassen haben, scheint die Verwendung eines Entity-Managers unangebracht zu sein.
Verwenden Sie die Lehre für die Handhabung von Verbindungen
So stellen Sie mit der Doktrin Connection
eine Verbindung zu einer Datenbank her Klasse:
/** @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))
);
Jetzt können Sie $connection
verwenden als einfaches PDO
Objekt:
$connection->executeQuery('SELECT * FROM your_table');
Sie könnten diesen Code als Dienst hinzufügen um es überall zugänglich zu machen.
Wenn Sie sich mit einer anderen Datenbank für eine andere Domain verbinden möchten, können Sie diesen Code verwenden, um die Domain zu identifizieren:
$this->getRequest()->getHost();
Zugriff auf die Domain in einer Aktion tun Sie dies:
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();
}