Symfony setParameter无法正常工作

时间:2016-12-10 21:08:34

标签: symfony query-builder

好的,所以我无法弄清楚为什么在将变量传递给setParameter时查询构建器不起作用。

这有效:

public function findByMatch($name)
    {
        $result = $this->createQueryBuilder('u')
            ->select('u.firstname, u.lastname')
            ->where('u.firstname LIKE :fname')
            ->setParameter('fname', ' % '.'paul'.' %')
            ;

        return $result->getQuery()->getResult();
    }

但是当条件通过变量传递时,它没有,它将$ name返回为null

  // from an entity
    $matches = $em->getRepository('AppBundle:User')->findByMatch($type);

   //.........

   // repo
    public function findByMatch($name)
        {
            $result = $this->createQueryBuilder('u')
                ->select('u.firstname, u.lastname')
                ->where('u.firstname LIKE :fname')
                ->setParameter('fname', ' % '.$name. ' %')
                ;

            return $result->getQuery()->getResult();
        }

进一步向下钻取,这也行不通,所以并不是传递变量。

public function findByMatch($name = "paul")
    {
        $result = $this->createQueryBuilder('u')
            ->select('u.firstname, u.lastname')
            ->where('u.firstname LIKE :fname')
            ->setParameter('fname', ' % '.$name. ' %')
            ;

        //return $result;

        return $result->getQuery()->getResult();
    }

1 个答案:

答案 0 :(得分:1)

实际上,就像塞拉德所说的那样,我认为围绕%的空间会弄乱你的查询。 我测试了一些组合,似乎只有这个组合起作用了:

->setParameter('fname', '%' . $name . '%')

因此,如果您不需要这些空格,我建议您删除它们。