7

何度も試した結果、ようやくドキュメントを暗記できたと思います。それでは、あなたの助けが必要です.Doctrineがこのエラーを表示する理由がわかりません:

無効なパラメータ番号: バインドされた変数の数がトークンの数と一致しません

これが私のコードです:

$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

4 に答える 4

8

I presume ->setParameter overrides the previous one.

For multiple Parameters use:

->setParameters(['key1' => $value1, 'key2' => $value2])

See Doctrine Upgrade:

From now on, parameters in queries is an ArrayCollection instead of a simple array. This >affects heavily the usage of setParameters(), because it will not append anymore parameters >to query, but will actually override the already defined ones. Whenever you are retrieving a >parameter (ie. $query->getParameter(1))

Doctrine Upgrade Description

Maybe that also applies to setParameter?

于 2013-04-15T14:55:28.567 に答える