为什么 Doctrine Query 会抛出 "Too many parameters" QueryException
Why does Doctrine Query throw "Too many parameters" QueryException
这是在控制器中
$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 和 categories 不为空时我看到一个错误:
Too many parameters: the query defines 1 parameters and you bound 2
With one null its work; for example diplomes==null and
categories!=null it work without error
您为两个参数指定了相同的名称,因此 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();
}
这是在控制器中
$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 和 categories 不为空时我看到一个错误:
Too many parameters: the query defines 1 parameters and you bound 2
With one null its work; for example diplomes==null and categories!=null it work without error
您为两个参数指定了相同的名称,因此 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();
}