参数无效:令牌 1 未在查询中定义

Invalid parameter: token 1 is not defined in the query

这是我根据 JSON ajax 查询过滤宠物的代码 我在图片

后收到错误消息

public function filter($object, $active=true){

        $query = $this->createQueryBuilder('p');
        $query->innerjoin('TadpetProfessionalBundle:ProPet', 'pp', 'WITH', 'pp.professionalId = p.id');
        $query->innerjoin('TadpetManagerBundle:Pet', 'ppp', 'WITH', 'ppp.id = pp.petId');

        $query->where('p.isActive = :active')
        ->setParameter('active', $active);

        if(!empty($object->pets)){
            $qString = "";
            for($i=1; $i<=sizeof($object->pets); $i++){
                if($i == 1){
                    $qString .= "ppp.name = :petname".$i;
                }else{
                    $qString .= " OR ppp.name = :petname".$i;
                }
            }
            $query->andWhere($qString);

            $query->setParameter('petname'+1,$object->pets[0]);
            $query->setParameter('petname'+2,$object->pets[1]);
            $query->setParameter('petname'+3,$object->pets[2]);
        }
        return $query->getQuery()->getResult();

}

请帮帮我

在这些行中:

$query->setParameter('petname'+1,$object->pets[0]);
$query->setParameter('petname'+2,$object->pets[1]);
$query->setParameter('petname'+3,$object->pets[2]);

您正在将 'petname' 添加到数字中,但您应该将它们连接起来:

$query->setParameter('petname'.1,$object->pets[0]);
$query->setParameter('petname'.2,$object->pets[1]);
$query->setParameter('petname'.3,$object->pets[2]);

此外,您可以使用循环:

for($i=1; $i<=sizeof($object->pets); $i++){
    $query->setParameter('petname'.$i,$object->pets[$i-1]);
}