これは、DoctrineORMが解決するよりも多くの問題を引き起こす可能性が高い状況の1つです。次のことができます:
- ネイティブクエリを使用する
および関連する
ResultSetMapping
セットアップ - SQLクエリをDoctrineがDQLで処理できるものにリファクタリングします。クエリを見ると、さまざまな方法で実行できます(たとえば、サブクエリをFROM / JOIN部分の一時テーブルとして扱う)が、DoctrineDQLで許可される方法がわかりません >
- DoctrineDBALを使用してストレートSQLを実行するだけです。
$this->_em
を使用しているようです これにより、あなたはEntityRepository
にいると思います 、次のように実行できます:$this->_em->getConnection()
を取得するにはDBAL接続 次に、$conn->query()
を実行します。 。明らかに、この方法ではORM(データベースにとらわれないなど)の利点が失われますが、ORMは複雑なクエリを実行する税金があると考えることができます。
これらはどれも理想的ではないことを理解していますが、経験から、必要なことを達成するためにDoctrineORMを邪魔にならないようにプッシュする方がよい場合があります。