2016-07-06 40 views
-1

有人可以给我一个解释为什么我的查询的部分和我的查询不起作用吗?学说查询生成器和在哪里不能工作

这里是我的功能:

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; 
    } 

部分它trows这个无效参数:格式?给定,但:或?预期。

任何想法?

谢谢!

纪尧姆

回答

0

也许你错过来连接帕拉姆ID为其他参数来完成。试试这个:

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

希望这有助于

+0

它的工作原理!简直不敢相信我没有注意到。非常感谢您的亲切先生。 –

相关问题