2016-07-06 96 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

它的工作原理!簡直不敢相信我沒有注意到。非常感謝您的親切先生。 –