为什么Doctrine Query抛出“参数太多”QueryException [关闭]

问题描述 投票:0回答:1

这是在控制器中

$candidats = $repository->findList(
$data["recherche_candidat"]["diplomes"],
$data["recherche_candidat"]["categories"]);

而这在存储库中

public function findList($diplomes,$categories,)
{
    $qb=$this->createQueryBuilder('c');

    if($categories!=null){
        $qb->andWhere('c.categorie IN (:value)')
            ->setParameter(':value', $categories);
    }

    if($diplomes!=null) {
        $qb->andWhere('c.diplome IN (:value)')
            ->setParameter(':value', $diplomes);
    }

    return $qb
        ->getQuery()
        ->getResult();
}

问题是当diplomes和类别不为null时我看到一个错误:

参数太多:查询定义了1个参数,你绑定了2个

有一个null它的工作;例如diplomes == null和categories!= null它没有错误地工作

php mysql symfony doctrine symfony4
1个回答
5
投票

您为这两个参数指定了相同的名称,因此Doctrine无法产生差异,只能识别1个参数。做这样的事情:

public function findList($diplomes,$categories,) {
    $qb=$this->createQueryBuilder('c');

    if($categories!=null){
        $qb->andWhere('c.categorie IN (:categories)')
            ->setParameter(':categories', $categories);
    }

    if($diplomes!=null) {
        $qb->andWhere('c.diplome IN (:diplomes)')
            ->setParameter(':diplomes', $diplomes);
    }

    return $qb
        ->getQuery()
        ->getResult(); 
}
© www.soinside.com 2019 - 2024. All rights reserved.