Laravel,两列之间的日期范围过滤器
Posted
技术标签:
【中文标题】Laravel,两列之间的日期范围过滤器【英文标题】:Laravel, Date range filter between two column 【发布时间】:2022-01-03 13:53:48 【问题描述】:您好,我想从两个不同的列中过滤日期范围,这是我当前的过滤日期:
$(document).ready( function()
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex)
var datepicker_to = $('#datepicker_to').datepicker("getDate");
var datepicker_from = $('#datepicker_from').datepicker("getDate");
var startDate = new Date(data[20]);
if (datepicker_from == null && datepicker_to == null) return true;
if (datepicker_from == null && startDate <= datepicker_to) return true;
if (datepicker_to == null && startDate >= datepicker_from) return true;
if (startDate <= datepicker_to && startDate >= datepicker_from) return true;
return false;
);
$('#datepicker_from, #datepicker_to').change(function()
tableMediaOrder.draw();
);
);
到目前为止,我只能从一列中过滤日期范围,其中被过滤的列是 Date(data[20]);
列,即 created_at
列,有没有办法像我的情况一样过滤两列之间的日期范围是 @ 987654326@和periode_end
?
这是专栏:
谢谢!
更新: 这是我的controller.php:
public function index(Request $request)
if ($request->ajax())
if(auth()->user()->is_admin)
$data = MediaOrder::get();
else
$data = MediaOrder::memberOf(auth()->user()->group_id)->get();>get('group_idUser'))->get();
return DataTables::of($data)
->addIndexColumn()
->addColumn('action',function($row)
$btn = '<a style="margin:5px" href="javascript:void(0)" id="viewMediaOrder" data-toggle="tooltip" data-id="'.$row->id.'" data-original-title="View" class="edit btn btn-primary btn-sm button1 viewMediaOrder" value=" csrf_token() "><i class="fa fa-eye mr-1"></i>View</a>';
if(!$row->isdisabled)
$btn = $btn.'<a style="margin:5px" href="javascript:void(0)" id="editMediaOrder" data-toggle="tooltip" data-id="'.$row->id.'" data-original-title="Edit" class="edit btn btn-warning btn-sm button1 editMediaOrder" value=" csrf_token() "><i class="fa fa-pencil mr-1"></i>Edit</a>
<a style="margin:5px" href="javascript:void(0)" data-toggle="tooltip" id="disableMediaOrder" data-id="'.$row->id.'" data-original-title="Delete" class="btn btn-danger btn-sm button1 disableMediaOrder" value=" csrf_token() "><i class="fa fa-power-off mr-1"></i>Disable</a>';
return $btn;
)
->rawColumns(['action'])
->make(true);
else
\Meta::set('title', 'Media Order');
$groups = Group::all();
$media_order = DB::table('media_order')->get();
$moo = MediaOrder::get();
$users = User::orderBy('name', 'asc')->get();
return view('media-order.index')->with(compact('users','moo','groups'));
【问题讨论】:
你能分享你的控制器代码 我已经更新了我的问题,但主要是我使用 jquery 作为我的过滤器,而不是来自我的索引 所以你需要在数据表端而不是服务器端过滤吗? 是的,类似的 【参考方案1】:就这样吧
$query->whereDate('periode_start', '>=', $datepicker_from)
->whereDate('periode_end', '<=', $datepicker_to);
现在您可以在两列之间获得过滤日期范围
【讨论】:
以上是关于Laravel,两列之间的日期范围过滤器的主要内容,如果未能解决你的问题,请参考以下文章