Fluid SQL Query依赖于变量值

时间:2017-09-19 19:38:22

标签: php sql symfony doctrine query-builder

我需要make查询,但这不是简单的查询。 我需要在查询中setParameters,具体取决于变量值。简单的代码:

    $repository = $this->getDoctrine()->getRepository(Item::class);

    $query = $repository->createQueryBuilder('b');

    if ($itemId != null) {
        $query->where('b.id = :id')
            ->setParameter('id', $itemId);
    }

    if ($name != "XXX") {
        $query->where('b.name = :name')
            ->setParameter('name', $name);
    }

    $item = $query->getQuery()->getResult();

    return $this->render('default/search/result.html.twig',
        array('item' => $item));

但是这段代码不正确。有人知道怎么解决吗?

1 个答案:

答案 0 :(得分:0)

您应该使用$query->andWhere()

所以在你的情况下:

$repository = $this->getDoctrine()->getRepository(Item::class);

    $query = $repository->createQueryBuilder('b');

if ($itemId != null) {
    $query->where('b.id = :id')
        ->setParameter('id', $itemId);
}

if ($name != "XXX") {
      $query->andWhere('b.name = :name')
        ->setParameter('name', $name);
}

$item = $query->getQuery()->getResult();

return $this->render('default/search/result.html.twig',
    array('item' => $item));
  

//注意: - > andWhere()可以直接使用,没有任何 - > where()   前

有关详情,请参阅此处:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html