Salut,

J'ai crée un code pour faire un recherche avec multicritères mais il marche seulement si tous les champs sont remplis dans le formulaire et si un champ est vide , la requête n'affiche rien. Comment je peux faire un "where" seulement sur les champs non vide ? merci d'avance

Controller:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
public function listSearchAction($page, Request $request)
 {
 
     if ($request->getMethod() == 'GET') {
 
     $em = $this->getDoctrine()->getManager();
 
     $paginator  = $this->get('knp_paginator');
 
 
     $name = $request->query->get('name');
     $city = $request->query->get('city');
 
     $qb = $em->getRepository('ProjectAgenceBundle:Agence')->getListSearchAgencesFrontend($name, $city);  
 
     $pagination = $paginator->paginate(
     $qb,
     $request->query->get('page', $page),10);
 
     }
 
 
     return $this->render('ProjectFrontendBundle:Agence:agence-search-list-view.html.twig',array(
     'pagination' => $pagination,
     'mode'=> $mode,
     ));
 }
Repository
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
public function getListSearchAgencesFrontend($name, $city)
{
    $qb = $this->createQueryBuilder('a')
        ->leftJoin('a.logo', 'l')
        ->addSelect('l')
        ->Where('a.enabled = 1')
        ->andWhere('a.city = :city')
        ->setParameter('city', $city)
        ->andWhere('a.name LIKE :name')
        ->setParameter('name', '%'.$name.'%');
 
    return $qb;
 
}
from.twig
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<form action="{{ path('frontend_agences_list_search') }}" method="get">
           <div class="form-group">
               <label>Nom agence</label>
               {{ form_widget(left_form_search.name) }}
           </div>
 
           <div class="form-group">
               <label>Ville</label>
                 <div class="selector">
                   {{ form_widget(left_form_search.city) }}
                </div>
           </div>
           {{ form_rest(left_form_search) }}
           <br />
          <button type="submit" class="btn-medium icon-check uppercase full-width">recherche</button>
   </form>