经过多次尝试,我想我终于把文档背熟了。 然后,我需要你的帮助..我不明白为什么 Doctrine 向我显示这个错误:
Invalid parameter number: number of bound variables does not match number of tokens
这是我的代码:
$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();
预先感谢您的回答。
最佳答案
如果您不小心使用了多个 where()
,也会发生这种情况,这种情况发生在我身上一次。
$em = $this->getEntityManager();
$query = $em->createQueryBuilder()
->from('AppBundle:SomeEntity', 's')
->select('s')
->where('s.foo = :foo')
->where('s.bar = :bar') // <- HERE
->setParameter('foo', 'Foo Value')
->setParameter('bar', 'Bar Value');
应该是:
$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');
希望这对某人有帮助。
关于php - Doctrine setParameter 和无效参数号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16017741/