我遇到了以下问题。 我想使用带有orX,和X和Like的querybuilder创建一个查询。 查询self是正确生成的,但参数不会被绑定。
创建查询的代码:
$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`
是否有人知道参数未绑定到查询中的原因?
答案 0 :(得分:0)
->expr()->like(
要在LIKE()比较中使用的第二个参数。你可以尝试类似的东西:
$this->expr()->like('u.name', $this->expr()->literal('%'.$findBy['name'].'%'))
希望这个帮助