2016-07-06 12 views
-1

Kann mir jemand erklären, warum der andWhere Teil meiner Abfrage nicht funktioniert?Doctrine Query Builder andWo funktioniert nicht

Hier ist meine Funktion:

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

Alles funktioniert perfekt, aber wenn ich das es

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

Teil hinzufügen Trows dies: ungültiger Parameter Format? gegeben, aber: oder? erwartet.

Irgendwelche Ideen?

Vielen Dank!

Guillaume

Antwort

0

wahrscheinlich verpassen Sie den param-ID verketten, wie in den anderen Parametern durchgeführt. Versuchen Sie folgendes:

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

Hope this Hilfe

+0

Es funktioniert! Kann nicht glauben, dass ich es nicht bemerkt habe. Vielen Dank, lieber Herr. –