2017-05-22 10 views
0

がある私は、このようなテーブルを持っているクエリを作る取得する必要がありますisBeautiful、isGreat、またはその両方。は、少なくとも1つの条件

$avaliableitems = item::where("isAvaliable,1) 
        ->where("isBeautiful",1) 
        ->orWhere("isGreat",1)->get(); 

これは疑似コードですが、うまくいきません。

私はalwaysjust各アイテムをどこisavaliable = 1、その後ループアイテムを取得して行うことができます知っている:

foreach($avaliableitems as $avaliableitem){ 
if($avaliableitem->isBeautiful == 1 || $avaliableitem->isGreat){ 

//do things 

} 
} 

しかし、前述のように雄弁でそれを行う方法があるのだろうか。

+1

この$ avaliableitems =アイテムを試してみてください::場所( "isAvaliable、1) - > orwhere(" isBeautiful "1) - > orWhere(" isGreat "、1) - > get(); – JYoThI

答えて

1

近く使用できます。

item::where('isAvaliable', 1) 
      ->where('t_Id', 2) 
      ->where(function($q) { 
       $q->where('isBeautiful', 1) 
       ->orWhere('isGreat', 1); 
      })->get(); 
1

Laravelのクエリビルダはクロージャも受け入れます。

ので、このようなものが動作するはずです:

$availableItems = item::where('isAvailable',1) 
         ->where(function($query)) { 
          $query->whereNull('isBeautiful', 1) 
            ->orWhere('isGreat', 1) 
         }) 
         ->get(); 
関連する問題