2015-06-19 19 views
16

Wywołuję URL z dynamicznymi wyszukiwarkami. Jak sformułować poprawne zapytanie Wymowne zapytanie?Laravel: dynamiczne klauzula where z Elouquent

Teoretycznie:

  1. zapytań
  2. zapytanie gdzie (someParam1)
  3. zapytanie gdzie (someParam2)
  4. zapytania orderby (someParam3)
  5. zapytania dostać

Potrzebuję tego rodzaju struktury, aby można było użyć klauzuli where, jeśli istnieje param. Jeśli jest jakiś inny sposób w Laravel, proszę dać mi znać.

Odpowiedz

41

To proste z Laravel. Wystarczy zrobić coś takiego:

$query = User::query(); 

if ($this == $that) { 
    $query = $query->where('this', 'that'); 
} 

if ($this == $another_thing) { 
    $query = $query->where('this', 'another_thing'); 
} 

if ($this == $yet_another_thing) { 
    $query = $query->orderBy('this'); 
} 

$results = $query->get(); 
+0

I mam problem z pierwszej linii. Może się zdarzyć, że nie będzie bo tam, gdzie params :) Jak mogę wtedy uruchomić zapytanie? –

+7

Jeśli chcesz uruchomić puste zapytanie, po prostu wykonaj '$ query = User :: query()'. Następnie możesz dodać wszystkie serwery warunkowe i uzyskać wyniki na końcu. – wunch

+0

@wunch Spróbuję, dziękuję. –

0

można przekazać wartość dynamiczną przez poniżej przykład

$user_auctions = $this->with('userAuctions') 
       ->where('users.id', '=', $id) 
       ->get(); 
Powiązane problemy