参数太多:查询定义了0个参数,并且您绑定了1个错误

问题描述

我是Symfony的新手,但出现错误。 我一直在寻找关于stackoverflow的解决方案,但似乎没有一个适合我的问题。 错误: “参数太多:查询定义了0个参数,并且您绑定了1个” 在运行查询时:

class Report extends BaseEntityManager
{
    use ContainerAwareTrait;
    
    public function getPager(array $criteria,$page = 1,$limit = 5,array $sort = array()){
        $parameters = array();
        $query = $this->getRepository()
                ->createQueryBuilder('r')
                ->select('r,g')
                ->leftJoin('r.media','g')
                ->leftJoin('r.category','c')
                ->orderBy('r.id','ASC');
        
        if (isset($criteria['context'])){
            $query->andWhere('c.context = :contextId');
            $parameters['contextId'] = $criteria['context'];
            
        }
        
        if(isset($criteria['category'])){
            $query->andWhere('r.category = :categoryId');
            $parameters['categoryId'] = $criteria['category'];
        }
        
        if(isset($criteria['author'])){
            $query->andWhere('r.user = :author');
            $parameters['author'] = $criteria['author'];
        }
        
        if(isset($criteria['search'])){
            $query->andWhere('lower(r.title) LIKE lower(:search) OR lower(r.description) LIKE lower(:search) OR lower(r.location) LIKE lower(:search)');
            $parameters['search'] = '%'.$criteria['search'].'%';
            
        }
        
        if(isset($criteria['status'])){
//            $query->andWhere('r.status = :status');
//            $parameters['status'] = $criteria['status'];
            $s0= "'".$criteria['status'][0]."'";
            $s1= "'".$criteria['status'][1]."'";
            $s2= "'".$criteria['status'][2]."'";

            $query->andWhere('r.status = '.$s0.' OR r.status = '.$s1.' OR r.status = '.$s2);
            $parameters['status'] = $criteria['status'];

        }
   
  

        $query->setParameters($parameters);
        $adapter = new DoctrineORMAdapter($query);
        $pagerfanta = new Pagerfanta($adapter);
        
        if($limit == -1){
            $pagerfanta->setMaxPerPage($pagerfanta->getNbResults());
        }
        else{
            $pagerfanta->setMaxPerPage($limit)
                ->setCurrentPage($page);
        }
        return $pagerfanta;
        
    }

}

绝无文字,因为:看来您的帖子大部分是代码;请添加更多详细信息。 没关系的文本,因为:看来您的帖子大部分是代码;请添加更多详细信息。

解决方法

没有命名为:status的占位符,但是在$parameters中,您正在根据条件传递状态值

$parameters['status'] = $criteria['status'];

此外,您直接在查询中传递状态值,这不是一个好方法,而是使用命名占位符作为状态值

您也可以使用IN()子句作为状态值

if(isset($criteria['status'])){
    $query->andWhere('r.status IN(:status)');
    $parameters['status'] = $criteria['status'];
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...