2017-03-06 5 views
0

Ich bekomme kein Ergebnis mit der Funktion, die Clubs aus einem Suchformular in einer Ansicht zu bekommen. mein „Suche“ ControllerSuche Methode Controller in Laravel

Hier

public function getClubs(Request $request){ 

     if($request->has('recherche')){ 

      $clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request .'%')->where('type_structure_id' , '=' , 4)->get(); 



     }else{ 
      $clubs = Structure::where('type_structure_id' , 4)->paginate(10); 
     } 

     dd($clubs); 

     return view('structure/clubs' , compact('clubs')); 

    } 

ich auf Band versucht, den genauen Namen eines Vereins, aber immer noch kein Ergebnis, jemand eine Idee ein Suchmethode zu erhalten, das funktioniert? Vielen Dank im Voraus

Antwort

1

Ihr Vergehen im gesamten bei der Suche $ Anfrage Änderung $ request-> Eingang ('recherche') oder $ request-> recherche

public function getClubs (Request $ request) {

if($request->has('recherche')){ 

    $clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->recherche .'%')->where('type_structure_id' , '=' , 4)->get(); 

}else{ 
    $clubs = Structure::where('type_structure_id' , 4)->paginate(10); 
} 

dd($clubs); 

return view('structure/clubs' , compact('clubs')); 

} 

Eine praktische Debug-Funktion ist toSql(), die Sie die aktuelle sQL-Anweisung

$clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->recherche .'%')->where('type_structure_id' , '=' , 4)->toSql(); 

bearbeiten zeigen mehrere wheres

verwenden
$clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->recherche .'%') 
      ->orWhere('club_name' , 'LIKE' , '%'. $request->recherche .'%') 
      ->whereHas('categories', function ($query) use ($request) { 
       $query->where('category_name','LIKE' , '%'. $request->recherche .'%'); 
     }) 
      ->where('type_structure_id' , '=' , 4) 
      ->get(); 

und meine persönliche Präferenz, wie dies zu tun

$search = $request->get('recherche'); 
    if ($search) { 
     $query = Structure::Where('nom_structure', 'like', "%$search%"); 
    } else { 
     $query = Structure::select(); 
    } 

    $clubs = $query->where('type_structure_id', 4)->paginate(10) 
     ->appends(['recherche' => $search]); 
+0

vielen Dank! es funktioniert ! wenn ich diese Funktion mit mehreren Suchparametern aufbauen möchte. Zum Beispiel kann der Benutzer nach dem Namen des Clubs oder nach der Nummer des Clubs suchen? Muss ich eine Oder-Bedingung in die Aussage einfügen? –

+1

Ja, Sie verwenden einfach orWhere, ich habe meine Antwort aktualisiert, um dies zu zeigen und haben auch hinzugefügt, woHas zeigt Ihnen, wie Sie auf Relationen suchen, wenn Sie das nützlich finden Sie weitere Informationen finden Sie unter https://laravel.com/docs/ 5.4/eloquenten Beziehungen – rchatburn

+0

vielen Dank !!! Das einzige Problem ist, dass mein Ergebnis diese Bedingungen nicht zu bekommen scheint -> where ('type_structure_id', '=', 4), tatsächlich habe ich versucht und es zeigt mir auch type_structure an, die nicht gleich ID 4 sind. Ich möchte nur Clubs mit type_structure_id = 4 anzeigen. Warum funktioniert die Bedingung nicht bei der Abfrage? –

1

In Ihrem Fall wäre, ist $request ein Objekt. Sie wollen nur den eingegebenen Suchbegriff:

$clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->input('recherche') .'%')->where('type_structure_id' , '=' , 4)->get();