2016-07-06 4 views
-1

누군가가 내 쿼리의 and 부분이 작동하지 않는 이유에 대해 설명해 줄 수 있습니까? , 잘못된 매개 변수 형식 :Doctrine Query Builder 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; 
    } 

부분을 추가 할 때이 trows : 여기

내 기능입니다? 주어진, 그러나 : 또는? 예상했다.

아이디어가 있으십니까?

감사합니다. 기욤

답변

0

아마 당신은 다른 매개 변수에서 수행으로 PARAM ID를 연결하는 놓친다. 이 시도 :

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

희망이 도움이 작동

+0

을! 내가 눈치 채지 않았다는 것을 믿을 수 없다. 대단히 친절합니다. –

관련 문제