J'ai perdu des heures trilion sur Google, mais aucune des solutions n'était bonne.
J'ai ce constructeur de requêtes:
$qb2=$this->createQueryBuilder('s')
->addSelect('u')
->innerJoin('s.user','u')
->where("u.id IN(:followeeIds)")
->andWhere('s.admin_status = false')
->setParameter('user', $user)
->setParameter('followeeIds', $arrayFolloweeIds)
->orderBy('s.id','DESC')
->setMaxResults(15)
;
Je pourrais faire une deuxième requête puis faire comme $qb->getDQL()
mais aurais-je mis en cache la requête?
Erreur:
Invalid parameter number: number of bound variables does not match number of tokens
Vous définissez le paramètre utilisateur mais je ne vois pas qu'il soit utilisé dans la requête nulle part?
J'ai également eu des problèmes avec WHERE IN
et Doctrine QueryBuilder
avec des tableaux me donnerait une erreur similaire, et curieusement exécutant array_values
avant de lier le paramètre semble également résoudre ces problèmes.
Essayer:
$qb2=$this->createQueryBuilder('s')
->addSelect('u')
->innerJoin('s.user','u')
->where("u.id IN(:followeeIds)")
->andWhere('s.admin_status = false')
->setParameter('followeeIds', array_values($arrayFolloweeIds))
->orderBy('s.id','DESC')
->setMaxResults(15)
;
Dans Symfony2.8, l'exemple suivant m'aide
...
$qb2->where(
$qb2->expr()->in('u.id', ':ids')
)
->setParameter('ids', $ids_array)
...