我遇到了Symfony / Doctrine2有两个问题的SQL
语句的问题:
$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中测试过相同的语句。
答案 0 :(得分: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')
答案 1 :(得分:0)
¿你在使用什么Expr课程? 我几天前选择了错误的Expr类,并给我一个异常。
尝试:
use Doctrine\ORM\Query\Expr;