2016-07-10 8 views
0

Wie ich Laravel Eloquent mit abfragen kann der folgende:Larval 2 Wo auf derselben Spalte ist

->where('items.type',"shirt") 
->where('items.type',"glass") 

Ich brauche die Einzelteile mit der Art des Shirt und Glas

Die oben genannten Arbeiten zu bekommen mit 1 Wo in derselben Spalte. Wenn ich die 2. Where (Glas) stelle, wird nichts zurückgegeben.

Meine gewünschte Abfrage, wie SQL:

WHERE items.type == "shirt" || items.type == "gass" 
+0

wenn es sich um eine hasManyThrough Beziehung ist, dann haben Sie zu tun -> whereHas ('items.type', "T-Shirt") -> whereHas ('items.type' , "Glas") oder item.type ist ein Name einer Spalte? – naneri

Antwort

2

Verwenden Sie die orWhere Methode.

->where('items.type', 'shirt')->orWhere('items.type', 'glass') 

Es ist dokumentiert auf https://laravel.com/docs/5.2/queries#where-clauses.

Sie können die Einschränkungen zusammenführen und der Abfrage or-Klauseln hinzufügen. Die orWhere Methode akzeptiert die gleichen Argumente wie die where Methode:

Sie können auch die whereIn Methode verwenden.

->whereIn('items.type', ['shirt', 'glass']) 

Die whereIn Methode überprüft, ob eine Spalte angegebener Wert innerhalb des gegebenen Array enthalten ist:

0

Wenn Sie eine OR-Bedingung möchten, können Sie es innerhalb eines wo wickeln sollen!

->where(function($query){ 
    $query->where('items.type',"shirt")->whereOr('items.type',"glass"); 
}); 

ODER

->whereIn('items.type', ['shirt', 'glass'])