Doctrine查询生成器并没有工作

时间:2016-07-06 15:13:36

标签: symfony doctrine-orm query-builder

有人可以解释为什么我的查询的部分内容不起作用吗?

这是我的功能:

    public function searchSpectacle(request $request){
    $data = $request->request->all();

    $terms = explode(" ", $data["searchterms"]);
    $date = str_replace('/', '-', $data['datestring']);

    $query = $this->getDoctrine()->getManager()->createQueryBuilder();
    $query->select('S')
            ->from('AppBundle:Spectacle','S');
    $i = 0;
    $parameters = array();

    foreach ($terms as $key => $term){
        $query->orWhere('LOWER(S.nom) LIKE ?' . $i++);
        $parameters[] = '%' . $term . '%';
    }
    foreach ($terms as $key => $term){
        $query->orWhere('LOWER(S.artiste) LIKE ?' . $i++);
        $parameters[] = '%' . $term . '%';
    }

    if(!empty($date)){
        $query->andWhere('S.date = ?');
        $parameters[] = $date;
    }



    $query->setParameters($parameters);
    $spectacles = $query->getQuery()->getResult();

    return $this->render('liste_complete.html.twig', array('spectacles' => $spectacles));
}

一切都很完美但是当我添加

    if(!empty($date)){
        $query->andWhere('S.date = ?');
        $parameters[] = $date;
    }

部分它告诉我:参数格式无效,?给,但是:或?预期

有什么想法吗?

谢谢!

纪尧姆

1 个答案:

答案 0 :(得分:0)

可能你会错过将param id连接到其他参数中。试试这个:

if(!empty($date)){
    $query->andWhere('S.date = ?' . $i++);
    $parameters[] = $date;
}

希望这个帮助