1

Symfony/Doctrine2SQLで 2 つのエンティティを使用してステートメントを実行すると問題が発生します。

$qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select('s')
    ->from('basecomProductionWorkflowBaseBundle:SubprocessData', 's')
    ->leftJoin('basecomProductionWorkflowBaseBundle:ReleaseDay', 'r', Expr\Join::WITH, 'r.id = s.releaseDay')
    ->where(
            $qb->expr()->andX(
                    $qb->expr()->eq('r.date', ':date'),
                    $qb->expr()->isNotNull('r.edition')
            )
    )
    ->setParameter('date', $date);

次のエラー メッセージが表示されました。

[Semantical Error] line 0, col 124 near 'r WITH r.id =': Error: Identification Variable basecomProductionWorkflowBaseBundle:ReleaseDay used in join path expression but was not defined before.

PS: 両方のテーブルは互いに関係がありません (別の問題を解決するための回避策です)。phpmyadmin で同じステートメントをテストしました。

4

2 に答える 2

1

そのはず:

->leftJoin('s.releaseDay', 'r')

この方法で条件を単純化することもできます。

->where('r.date = :date')
->andWhere('r.edition IS NOT NULL')

また:

->where('r.date = :date AND r.edition IS NOT NULL')
于 2012-10-12T12:28:23.883 に答える
0

¿どの Expr クラスを使用していますか? 数日前に Expr クラスを誤って選択し、同じ例外をスローしました。

試す:

use Doctrine\ORM\Query\Expr;
于 2012-10-13T11:55:59.797 に答える