需要在至少有一个条件的情况下进行查询

时间:2017-05-22 11:05:48

标签: php laravel eloquent

我有一张这样的表:

Table: item
isBeautiful: Boolean
isGreat: Boolean
isAvaliable: Boolean

我想与Eloquent进行查询,该查询为我提供了所有可用的项目,可以是isBeautiful或isGreat,或两者兼而有之。

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

这是伪代码,我知道它不起作用。

我知道我总是可以获得isavaliable = 1的项目,然后遍历每个项目并执行:

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

//do things

}
}

但我想知道如果有一种方法可以像前面提到的那样使用Eloquent。

2 个答案:

答案 0 :(得分:1)

你可以近距离使用。

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

答案 1 :(得分:1)

Laravel的查询构建器也接受Closure。

所以,这样的事情应该有效:

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