doctrine不会将参数绑定到查询

时间:2016-09-09 09:41:04

标签: doctrine-orm zend-framework2

Hiho,

我遇到了以下问题。 我想使用带有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`

是否有人知道参数未绑定到查询中的原因?

1 个答案:

答案 0 :(得分:0)

->expr()->like(要在LIKE()比较中使用的第二个参数。你可以尝试类似的东西:

$this->expr()->like('u.name', $this->expr()->literal('%'.$findBy['name'].'%'))

希望这个帮助