Flo*_*eux 7 php symfony doctrine-orm
经过多次尝试,我想我终于明白了文档.然后,我需要你的帮助..我不明白为什么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();
Run Code Online (Sandbox Code Playgroud)
提前感谢您的回答.
Yes*_*rry 11
如果您不小心使用了多个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');
Run Code Online (Sandbox Code Playgroud)
应该:
$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');
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.
我认为 - > setParameter会覆盖前一个.
对于多个参数使用:
->setParameters(['key1' => $value1, 'key2' => $value2])
Run Code Online (Sandbox Code Playgroud)
请参阅Doctrine升级:
从现在开始,查询中的参数是ArrayCollection而不是简单数组.这>会严重影响setParameters()的使用,因为它不会追加任何参数>来查询,但实际上会覆盖已定义的参数.每当你检索>参数时(即$ query-> getParameter(1))
也许这也适用于setParameter?
归档时间: |
|
查看次数: |
21387 次 |
最近记录: |