2017-05-05 2 views
0

Ich versuche, eine Suchabfrage mit verschiedenen params zu bauen, aber einige der Filter Spalts kommen aus anderen Tabellen, die im Zusammenhang mit einem anderen Tisch sind, weiß ich nicht, wie man erreicht, dassSuche mit Filtern aus anderen Tabellen

Zum Beispiel kommt die Spalte "compet_id" von meiner Tabelle Rencontre. ;

In meinem Tisch RencontreOfficiel ich habe mit „Rencontre“ Ich bin nicht sicher,

wenn mein klar, es ist ein bisschen schwierig zu erklären rencontre_id, um die Beziehung zu machen hoffe, dass jemand sehen und helfen könnte.

hier mein Controller:

$query = RencontreOfficiel::query(); 

     $filters = [ 
     'compet_id' => 'compet_id', 
     'structure_id' => 'structure_id', 
     'catg_compet_id' => 'dt_rencontre', 
     'fonction_id' => 'dt_rencontre', 
     'bareme_id' => 'bareme_id', 
     'dt_min_rencontre' => 'dt_rencontre', 
     'dt_max_rencontre' => 'dt_rencontre', 

     ]; 

     $dt_min = $request->input('dt_rencontre_min'); 
     $dt_max = $request->input('dt_rencontre_max'); 

     foreach ($filters as $key => $column) { 
      $query->when($request->{$key}, function ($query, $value) use ($column , $dt_min , $dt_max) { 
       $query->where($column, $value)->orWhereBetween('dt_rencontre' , [$dt_min , $dt_max]); 
      }); 

     } 

Antwort

1

Sie whereHas und with Stichwort in Eloquent Suche verwenden können.

zum Beispiel haben Sie Blog Methode, die an User Modell angeschlossen ist. Jeder Blog wird vom Benutzer gesendet. Wenn Sie suchen in Benutzer nach seinen Blogs haben möchten, können Sie diese verwenden:

$user = User::where(function($query){ 
       $query->where('age','>=',18); 

      })->whereHas('blogs', function ($query){ 

        $query->where('text', 'LIKE', '%game%'); 

      }); 

In diesem Code blogs in whereHas Methodenname in User Modell der Eloquent Methode.

Ergebnis: Dieser Code zurück Benutzer älter als 18 Jahre, die Blogs mit Titel wie Spiel haben.

Verwandte Themen