如何使用Laravel Elequent制作多个where子句?

时间:2016-11-28 16:49:38

标签: php laravel eloquent

$data = Retour::where('status','=',3)->where('rma','LIKE', '%' .$searchquery.'%')->OrWhere('naam','LIKE', '%' .$searchquery.'%')->OrWhere('framenummer','LIKE', '%' .$searchquery.'%')->get();

此查询有什么问题?

忽略where status = 3 ..
并返回所有重新调整,即使状态!= 3 ..

提前致谢。

2 个答案:

答案 0 :(得分:1)

你应该在这里将orWhere()分组为封闭:

$data = Retour::where('status', 3)
    ->where(function($q) use($searchquery) {
        $q->where('rma', 'like', '%'.$searchquery.'%')
          ->orWhere('naam', 'like', '%'.$searchquery.'%')
          ->orWhere('framenummer', 'like', '%'.$searchquery.'%');
    })->get();

答案 1 :(得分:1)

在这种情况下使用scopes。见https://laravel.com/docs/5.3/eloquent#local-scopes

public function scopeSearch($query, $searchQuery)
{
        return $query->where('status',3)
                     ->where('rma','LIKE', "%$searchQuery%")
                     ->orWhere('naam','LIKE', "%$searchQuery%")
                     ->orWhere('framenummer','LIKE', "%$searchQuery%");
}

还有一件事

它不是OrWhere orWhere