【发布时间】:2016-09-09 09:41:04
【问题描述】:
喂,
我遇到了以下问题。 我想使用带有 orX、andX 和 Like 的查询构建器创建一个查询。 查询自身已正确生成,但不会绑定参数。
创建查询的代码:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('u')
->from('Application\Entity\User', 'u')
->andWhere(
$qb->expr()->orx(
$qb->expr()->andX(
$qb->expr()->like('u.name', ':name'),
$qb->expr()->like('u.lastname', ':lastname')
),
$qb->expr()->like('u.email', ':email')
)
)
->setParameter('name', '%' . $findBy['name'] . '%')
->setParameter('lastname', '%' . $findBy['lastname'] . '%')
->setParameter('email', '%' . $findBy['email'] . '%');
getParameters() 的转储如下所示:
object(Doctrine\Common\Collections\ArrayCollection)[579]
private 'elements' =>
array (size=3)
0 =>
object(Doctrine\ORM\Query\Parameter)[575]
private 'name' => string 'name' (length=4)
private 'value' => string '%Michael%' (length=9)
private 'type' => int 2
1 =>
object(Doctrine\ORM\Query\Parameter)[576]
private 'name' => string 'lastname' (length=8)
private 'value' => string '%Müller%' (length=8)
private 'type' => int 2
2 =>
object(Doctrine\ORM\Query\Parameter)[577]
private 'name' => string 'email' (length=5)
private 'value' => string '%mew1000@freenet.de%' (length=20)
private 'type' => int 2`
有没有人知道为什么参数没有绑定到查询中?
【问题讨论】:
-
你说的是什么参数?
-
用
->setParameter('...', '...')设置的参数 -
他们怎么了?
-
可能是您使用
orx表达式的方式存在问题。也许看看[这个答案]。(stackoverflow.com/a/15309726/1697459)。当学说编译它时,SQL 查询是什么样的? -
查询看起来像是在答案 #1 的评论部分中发布的
标签: doctrine-orm zend-framework2