2015-05-25 4 views
30

Ich versuche, Ergebnisse aus der Tabelle mit mehreren Wo und/oder Klauseln zu erhalten.Laravel 5 Eloquent wo und oder in Klauseln

My SQL-Anweisung lautet:

SELECT * FROM tbl 
WHERE m__Id = 46 
AND 
t_Id = 2 
AND 
(Cab = 2 OR Cab = 4) 

, wie ich das mit Laravel Eloquent bekommen kann?

My-Code in Laravel ist:

$BType = CabRes::where('m_Id', '=', '46') 
         ->where('t_Id', '=', '2') 
         ->where('Cab', '2') 
         ->orWhere('Cab', '=', '4') 
         ->get(); 

Antwort

50

Mit advanced wheres:

CabRes::where('m__Id', 46) 
     ->where('t_Id', 2) 
     ->where(function($q) { 
      $q->where('Cab', 2) 
      ->orWhere('Cab', 4); 
     }) 
     ->get(); 

Oder, noch besser, mit whereIn():

CabRes::where('m__Id', 46) 
     ->where('t_Id', 2) 
     ->whereIn('Cab', $cabIds) 
     ->get(); 
+0

Danke das funktioniert :) Aber wie kann ich das mit einem Array für Taxi bekommen, wenn mein Array mag: arrCab [2,4,6] – Crni

+0

Warum ist es besser, und woher kommt die Variable $ cabIds? – raarts

+0

Die zweite Option ist die beste –