注: これは、プロジェクトの課題トラッカーで報告された ORM の制限です。
階層のルートであるエンティティ クラスでDoctrine 2.3で導入された任意の結合構文を使用してDQLクエリを作成する際に問題に直面しています。
これらのクラスを考えると:
A - 継承なし
B1 - 抽象、階層のルート、識別子列の名前は「タイプ」
次のようにクエリビルダーをセットアップします。
$qb->select('a.id AS idA, b.id AS idB')
->from('\Entity\A', 'a')
->leftJoin('\Entity\B1', 'b', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.something=b.something');
そして、生成される SQL Doctrine は次のようなものです。
SELECT a.id, b.id FROM a LEFT JOIN b ON (a.something=b.something) WHERE b.type IN ('1', '2', '3')
問題は、 where が左結合を役に立たなくすることです。
ディスクリミネーター列の条件を強制的に結合に配置する方法はありますか? 少なくともそれはそれを作るでしょう...
バグレポートに記入する必要がありますか?