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



基本上我有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);
}

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

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

最新更新