Wydaje mi się, że korzystanie z Doctrines ODM nie jest właściwym sposobem podejścia do tego problemu. Nadal możesz używać Doctrine do łączenia się z bazami danych i wysyłania do nich zapytań. Ale jeśli nie masz klas encji, użycie menedżera encji wydaje się nieodpowiednie.
Użyj Doctrine do obsługi połączeń
Oto jak tworzysz połączenie do Bazy Danych z doktryną Connection
klasa:
/** @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))
);
Teraz możesz użyć $connection
jako proste PDO
obiekt:
$connection->executeQuery('SELECT * FROM your_table');
Możesz dodać ten kod jako usługę aby była dostępna wszędzie.
Jeśli chcesz połączyć się z inną bazą danych dla innej domeny, możesz użyć tego kodu do identyfikacji domeny:
$this->getRequest()->getHost();
Aby uzyskać dostęp do domeny za pomocą działania zrób to:
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();
}