Après de nombreux essais, je pense que je connais enfin la documentation par cœur. Ensuite, j'ai besoin de votre aide .. Je ne comprends pas pourquoi la doctrine me montre cette erreur:
Numéro de paramètre non valide: Nombre de variables liées ne correspond pas Nombre de jetons p> BlockQuote>
Voici mon code: P>
$qb = $this->em->createQueryBuilder(); $qb->select('m') ->from('Entities\Marque', 'm') ->leftJoin('m.magasin', 'ma') ->where('m.nom = :marque AND ma.nom LIKE :magasin') ->setParameter('marque', $marque) ->setParameter('magasin', '%'.$matchesNumber[1].'%'); $results = $qb->getQuery()->getArrayResult();
4 Réponses :
i présume -> SetParameter remplace le précédent.
Pour plusieurs paramètres Utilisez: P> Voir la mise à niveau de la doctrine: P> À partir de maintenant, les paramètres dans les requêtes sont un arraycollection au lieu d'un tableau simple. Ceci> affecte fortement l'utilisation des paramètres SETPARAMETTRES (), car il n'apportera plus de paramètres> à interroger, mais remplacera réellement les personnes déjà définies. Chaque fois que vous récupérez un paramètre A> (c.-à-d. $ Query-> getParameter (1)) p>
blockQuote> Description de la mise à niveau de la doctrine P> < p> Peut-être que cela s'applique également à SetParameter? P> P>
J'avais déjà essayé -> SetParameterers (['Marque' => $ Marque, 'Magasin' => '%'. $ MatchsNumber [1]. '%'] Mais aucun changement ..
Je suis tellement désolé .. Je viens de trouver mon erreur ... plus tard, comme plus plus tard dans mon code .. Je saisis une nouvelle requête avec mon ancien "$ qb" .. Je suis un tel noob! P>
$qb = $this->em->createQueryBuilder(); $parameters = array('marque'=>$marque, 'magasin'=>'%'.$matchesNumber[1].'%'); $qb->select('m') ->from('Entities\Marque', 'm') ->leftJoin('m.magasin', 'ma') ->where('m.nom = :marque') ->andWhere('ma.nom LIKE :magasin') ->setParameters($parameters); $results = $qb->getQuery()->getArrayResult();
Cela se produit également si vous utilisez accidentellement plus d'un devrait être: p> où () code>, qui me est arrivé une fois.
$em = $this->getEntityManager();
$query = $em->createQueryBuilder()
->from('AppBundle:SomeEntity', 's')
->select('s')
->where('s.foo = :foo')
->andWhere('s.bar = :bar') // <- CHANGE TO andWhere()
->setParameter('foo', 'Foo Value')
->setParameter('bar', 'Bar Value');
Êtes-vous peut-être appeler $ dB-> où à un moment ultérieur? Cela écraserait la déclaration existante.
Non, c'est la seule utilisation de la déclaration.
Sont
$ marque code> et
$ matchsNumber [1] code> pas null?