tokensnull tokens parameter number not invalid does bound php mysql doctrine

php - parameter - Número de parámetro inválido: el número de variables enlazadas no coincide con el número de tokens en Doctrine



invalid parameter number number of bound variables does not match number of tokens php (1)

¡No rodee ninguno de los parámetros en su texto de consulta con comillas!

->add(''where'', "c.owner = ?1 AND c.contact = u.id AND u.username LIKE ''?2''")

debiera ser

->add(''where'', "c.owner = ?1 AND c.contact = u.id AND u.username LIKE ?2")

Usando Doctrine 2 quiero obtener algunos usuarios que son contactos de otro usuario. El user tabla contiene la asignación entre esos usuarios. La consulta en la función devolverá el siguiente error:

Número de parámetro inválido: el número de variables enlazadas no coincide con el número de tokens.

Sin embargo, a mi mejor entender $str se establece en "b" y $ownerId se establece en "2" y ambos son asignados por la función setParameters .

protected function getContactBySubstring($str, $ownerId) { echo $str; echo $ownerId; $em = $this->getDoctrine()->getEntityManager(); $qb = $em->createQueryBuilder(); $qb->add(''select'', ''u'') ->add(''from'', ''/Paston/VerBundle/Entity/User u, /Paston/VerBundle/Entity/Contact c'') ->add(''where'', "c.owner = ?1 AND c.contact = u.id AND u.username LIKE ''?2''") ->add(''orderBy'', ''u.firstname ASC, u.lastname ASC'') ->setParameters(array (1=> $ownerId, 2=> ''%''.$str.''%'')); echo $qb->getDql(); $query = $qb->getQuery(); $users = $query->getResult(); foreach($users as $user) echo $user->getUsername(); exit; //return $contacts; }