2017-07-27 11 views
0

基本的に私は3つのフィルタを持っています。日付範囲、アカウントコード、rccode 2つ以上のパラメータでフィルタを作成するにはどうすればよいですか?それぞれは空白にすることができます。2つ以上のフィルタリクエストLaravel 5.3

<select class="form-control input-sm " name="account_code"><optgroup label="No Category"> 
    <option></option> 
    @foreach($accountCodes as $accountCode) 
    <option style="width:500px; font-size: 11px;" value="{{$accountCode->ac_code}}">{{$accountCode->ac_code}} - {{$accountCode->ac_description}} </option> 
    @endforeach 
</select> 
<select class="form-control input-sm" name="responsibility_center"> 
    <option></option> 
     @foreach($rcCodes as $rcCode) 
    <option style="width:500px; font-size: 11px;" value="{{$rcCode->rc_code}}">{{$rcCode->rc_code}} - {{$rcCode->rc_acronym}} </option> 
     @endforeach 
</select> 
<input class="form-control input-sm" type="date" value="" name="dt_from"> 
<input class="form-control input-sm" type="date" value="" name="dt_to"> 

コントローラー:

public function dashboard(Request $request){ 
     $s = $request->input('s'); 
     $disbursement = Disbursement::search($s) 
     ->paginate(20); 
    } 

私はこのためのベストプラクティス/解決策を見つける助けてください。ありがとうございました!

答えて

0
public function dashboard(Request $request){ 
    $disbursements = Disbursement::query(); 
    if($request->input('account_code')){ 
     $disbursements = $disbursements->where('account_code',$request->input('account_code')); 
    } 
    if($request->input('responsibility_center')){ 
     $disbursements = $disbursements->where('responsibility_center',$request->input('responsibility_center')); 
    } 
    if($request->input('dt_from')){ 
     $disbursements = $disbursements->where('dt_from','>=',$request->input('dt_from')); 
    } 
    if($request->input('dt_to')){ 
     $disbursements = $disbursements->where('dt_from','>=',$request->input('dt_from')); 
    } 
    $disbursements = $disbursements->paginate(20); 
    return view('dashboard',compact('disbursements')); 
}