Orm 在Doctrine2和Symfony Querybuilder中获取无效的参数数

Orm 在Doctrine2和Symfony Querybuilder中获取无效的参数数,orm,symfony,doctrine-orm,Orm,Symfony,Doctrine Orm,这是我的密码 if(!$criteria){ return null; } $em = $this->doctrine->getEntityManagerForClass('Sample\MyBundle\Entity\Call'); $qb = $em->createQueryBuilder(); $qb->add('select', 'c')->add('from', 'S

这是我的密码

if(!$criteria){
            return null;
        }

        $em = $this->doctrine->getEntityManagerForClass('Sample\MyBundle\Entity\Call');
        $qb = $em->createQueryBuilder();
        $qb->add('select', 'c')->add('from', 'Sample\MyBundle\Entity\Call c');

        if($criteria->getReason() && $criteria->getReason() != null){
            $qb->add('where', 'c.reason = ?1');
            $qb->setParameter(1, $criteria->getReason());
        }
        if($criteria->getCallDate() && $criteria->getCallDate() != null){
            $qb->add('where', 'c.callTime = ?2');
            $qb->setParameter(2, $criteria->getCallDate());
        }

        if($criteria->getPage()>1){
            $qb->setFirstResult(($criteria->getPage()-1) * 10)->setMaxResults(10);
        }

        $query = $qb->getQuery();
        return $query->getResult();
我收到此错误-
无效的参数编号:绑定变量的数量与令牌的数量不匹配
我在谷歌上搜索过,但找不到解决方案。我需要帮助


我甚至尝试将两个setParameter()调用放在条件check if语句之后,但这也会产生相同的错误。如果我没有设置第二个参数并删除第二个where条件,那么它就会工作。

哦,我想我犯了一个错误。我想我不能在“添加”功能中使用多个“where”。我将其替换为
$qb->andWhere('c.callTime>?2')
现在可以正常工作。

您是否尝试过不使用“c”别名(因为不需要别名,所以请将其全部删除)?直接调用'reason=?1'顺便说一句,这是一个sql错误。