Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 条令查询生成器和何处不工作_Symfony_Doctrine Orm_Query Builder - Fatal编程技术网

Symfony 条令查询生成器和何处不工作

Symfony 条令查询生成器和何处不工作,symfony,doctrine-orm,query-builder,Symfony,Doctrine Orm,Query Builder,有人能解释一下为什么我的查询的andWhere部分不起作用吗 以下是我的功能: public function searchSpectacle(request $request){ $data = $request->request->all(); $terms = explode(" ", $data["searchterms"]); $date = str_replace('/', '-', $data['datestring']);

有人能解释一下为什么我的查询的andWhere部分不起作用吗

以下是我的功能:

    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;
    }
第三部分:无效的参数格式?给,但是:还是?预料之中

有什么想法吗

谢谢大家!


Guillaume

您可能没有像在其他参数中那样连接参数id。试试这个:

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

希望这个帮助有用!真不敢相信我竟然没注意到。非常感谢您,先生。