我对 Symfony/Doctrine2 用两个 entite 做SQL
语句有问题:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('s')
->from('basecomProductionWorkflowBaseBundle:SubprocessData', 's')
->leftJoin('basecomProductionWorkflowBaseBundle:ReleaseDay', 'r', ExprJoin::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中测试了相同的语句。
它应该是:
->leftJoin('s.releaseDay', 'r')
您也可以通过以下方式简化条件:
->where('r.date = :date')
->andWhere('r.edition IS NOT NULL')
或:
->where('r.date = :date AND r.edition IS NOT NULL')
> ¿你用的是什么 Expr 类?几天前我错误地选择了 Expr 类,并抛出了同样的异常。
尝试:
use DoctrineORMQueryExpr;