两个或多个过滤器请求Laravel 5.3

时间:2017-07-27 06:26:14

标签: php laravel-5 filter request

基本上我有3个过滤器。日期范围,帐户代码,rccode。如何使用两个或更多参数制作过滤器?每个都可以是空白的。

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

请帮我找到最佳实践/解决方案。谢谢!

1 个答案:

答案 0 :(得分: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'));
}