2016-11-28 66 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