Doctrine 查询生成器和不工作的地方

问题描述 投票:0回答:1

有人可以解释一下为什么我的查询的 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;
    }

它的部分内容是:参数格式无效,?给定,但是:或?预计。

有什么想法吗?

谢谢!

纪尧姆

php symfony doctrine-orm query-builder
1个回答
0
投票

可能您错过了像其他参数中那样连接参数 id 的情况。试试这个:

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

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.