2016-04-26 17 views
0

我想只在搜索關鍵字不爲空時在選擇查詢中運行where條件。如果搜索鍵爲空,則跳過該條件。這是我的代碼,在Laravel查詢中搜索關鍵字不爲空時執行where條件

$users = User::orderBy('id','asc') 
      ->join('agents', 'users.id', '=', 'agents.user_id') 
      ->select('users.id', 'users.first_name', 'users.last_name', 'users.email') 

      ->where('agents.category', 'like', '%'.$category.'%') 

      ->orWhere('agents.location', 'like', '%'.$operation.'%') 
      ->get(); 

在此查詢,如果變量$category是空的沒有必要運行WHERE條件。和$operation爲空,哪裏的條件需要跳過。如何解決這個問題?

+1

請不要標記垃圾郵件。這與[tag:jquery]無關。 –

回答

3

嘗試以下操作:

$users = User::orderBy('id','asc')->join('agents', 'users.id', '=', 'agents.user_id')->select('users.id', 'users.first_name', 'users.last_name', 'users.email'); 
if(!is_null($category)) { 
$users = $users->where('agents.category', 'like', '%'.$category.'%')->orWhere('agents.location', 'like', '%'.$operation.'%'); 
} 
$users = $users->get(); 

或:

$users = User::orderBy('id','asc')->join('agents', 'users.id', '=', 'agents.user_id')->select('users.id', 'users.first_name', 'users.last_name', 'users.email')->where('agents.location', 'like', '%'.$operation.'%'); 
if(!is_null($category)) { 
$users = $users->orWhere('agents.category', 'like', '%'.$category.'%'); 
} 
$users = $users->get(); 
相關問題