0

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 つだけです。例で使用されているコードはすでに複雑に見えますが、他のドキュメントを見つけることができなかったため、ここで質問しています。

ありがとう!

4

1 に答える 1

1

代わりにクエリ ビルダーの使用を検討してください。

$qb = $entityManager->createQueryBuilder();
$qb->addSelect('a');
$qb->from('AcmeBundle:SomeEntity','a');
$qb->andWhere(... someColumn = 5 ...);

上記のクエリを直接実行するか、次のように追加することができます。

$qb->leftJoin('a.someOtherEntity','b');
$qb->andWhere(... additional conditions ...);
于 2012-12-11T16:42:35.287 に答える