DoctrinesODMを使用することはこれに取り組む正しい方法ではないように私には思えます。 Doctrineを使用して、データベースに接続してクエリを実行することもできます。ただし、エンティティクラスがない場合、エンティティマネージャーの使用は不適切と思われます。
接続処理にDoctrineを使用する
Connection
という教義を使用してデータベースへの接続を作成する方法は次のとおりです。 クラス:
/** @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))
);
これで、$connection
を使用できます 単純なPDO
として オブジェクト:
$connection->executeQuery('SELECT * FROM your_table');
このコードをサービスとして追加できます どこからでもアクセスできるようにします。
別のドメインの別のデータベースに接続する場合は、次のコードを使用してドメインを識別できます。
$this->getRequest()->getHost();
アクションでドメインにアクセスするには これを行う:
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();
}