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

这个查询有什么问题?如何在Laravel Elequent中创建多个where子句?

它忽略了其中状态= 3 ..
和返回所有reconrds即使在状态!= 3 ..

在此先感谢。

回答

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

这是完美的,非常感谢。 – Rubberduck1337106092

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%"); 
} 

还有一件事

它不是OrWhereorWhere

+1

我已经有了答案,不过谢谢! – Rubberduck1337106092