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

时间:2012-08-17 19:40:57

标签: 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', '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();

我收到此错误 - Invalid parameter number: number of bound variables does not match number of tokens我用Google搜索但无法找到解决方案。需要帮助。

我甚至尝试在条件检查if语句之后放置两个setParameter()调用但是也会给出相同的错误。如果我没有设置第二个参数并删除第二个where条件那么它就可以工作。

1 个答案:

答案 0 :(得分:0)

哦,我想我犯了一个错误。我想我不能在'add'函数中使用多个'where'。我用$qb->andWhere('c.callTime > ?2');替换它,现在它工作正常。