Symfony 2 で Doctrine を使用しています。共通部分を共有する DQL クエリがたくさんあります。AST を変更する Doctrine のカスタム ウォーカーを使用して、この問題を解決できることがわかりました。以下は、私が達成したいことの例です。
変身
SELECT a
FROM AcmeBundle:SomeEntity a
WHERE a.someColumn = 5
に
SELECT a
FROM AcmeBundle:SomeEntity a
LEFT JOIN a.someOtherEntity b
WHERE a.someColumn = 5 AND (b.someOtherColumn = 2 OR b.someTotallyOtherColumn = 3)
AST walker は、左結合を追加する必要があります。または複数の左結合を追加し、WHERE 部分に条件を追加する必要があります。
ドキュメント ( http://docs.doctrine-project.org/en/2.0.x/cookbook/dql-custom-walkers.html ) を読んでいましたが、例は 1 つだけです。例で使用されているコードはすでに複雑に見えますが、他のドキュメントを見つけることができなかったため、ここで質問しています。
ありがとう!