2017-06-28 4 views
0

Ich möchte ein whereHas zu einer Laravel-Abfrage hinzufügen, aber nur wenn eine Variable wahr ist. Ich probiere das unten aus, was keinen Fehler macht, aber nichts zurückgibt, wenn es sollte.Kann ich `when` mit` whereHas` in einer Laravel-Abfrage verwenden?

$assets = Asset::with('media') 
      ->when($category, function ($q) use ($category) { 
       return $q->whereHas('category', function ($query) use ($category) { 
        $query->whereId($category); 
       }); 
      })->offset($offset)->limit($limit)->get(); 

Wenn $category wahr ist, wird nichts zurückgegeben. Wenn $category falsch ist, wird alles zurückgegeben. Es funktioniert ohne die when Klausel.

Antwort

1

Das ist mein Code, es funktioniert:

return App\Car::with(['user']) 
      ->when($_GET['area']>'', function ($query) 
       { $query-> whereHas('user', function($query) { $query->where('area_id', $_GET['area']); } ); })->get(); 
Verwandte Themen