有人可以解释一下为什么我的查询的 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;
}
它的部分内容是:参数格式无效,?给定,但是:或?预计。
有什么想法吗?
谢谢!
纪尧姆
可能您错过了像其他参数中那样连接参数 id 的情况。试试这个:
if(!empty($date)){
$query->andWhere('S.date = ?' . $i++);
$parameters[] = $date;
}
希望这有帮助