上下文
我正在尝试转换此查询
Select
*
FROM
phases AS P
WHERE
NOT EXISTS( SELECT
*
FROM
rating AS R
WHERE
R.phase_id = P.id AND R.user_id = 53)
LIMIT 1
使用this示例
进入几个createQueryBuilder查询我已生成以下代码:
$subquery = $em->createQueryBuilder()
->select("r.id")
->from('AppDemoBundle:Rating', 'r')
->innerjoin('r.user', 'u')
->where('u.id = :_id')
->setParameter('_id', 53)
->getDQL();
$query = $em->createQueryBuilder()
->select('p')
->from('AppDemoBundle:Phases', 'p');
$query->andWhere($query->expr()->notIn('p.id', $subquery));
$phase = $query->getQuery()->getResult();
但我不断收到此错误,告知参数数量不正确。
Doctrine\\ORM\\Query\\QueryException: Invalid parameter number: number of bound variables does not match number of tokens (uncaught exception) at C:\\wamp\\www\\demo\\vendor\\doctrine\\lib\\Doctrine\\ORM\\Query\\QueryException.php line 62
问题:
我将不胜感激任何帮助。这是我第一次使用createQueryBuilder,我不确定为什么会出现这个问题。谢谢!
答案 0 :(得分:1)
您需要在外部查询上调用setParameter
而不是外部查询。因为那是你最终运行的那个似乎是合乎逻辑的。