You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel中基于daterangepicker实现数据日期范围筛选

日期范围筛选功能实现方案

第一步:修改前端JS代码,传递日期参数

你原来的axios请求没有携带选中的起止日期参数,所以后端拿不到任何请求参数,修改daterangepicker的回调函数如下:

$(function() {
    $('input[name="daterange"]').daterangepicker({
        "startDate": "11/01/2021",
        "endDate": "11/07/2021",
        opens: 'left'
    }, function(start, end, label) {
        console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')');
        // 新增参数传递,把格式化后的起止日期传给后端
        axios.get('/fetchdata', {
            params: {
                startDate: start.format('YYYY-MM-DD'),
                endDate: end.format('YYYY-MM-DD')
            }
        }).then(response => {
            // 这里根据你的业务需求处理返回的数据,比如更新页面列表
            console.log(response.data);
        })
    });
});

第二步:优化后端控制器代码

你原来的控制器里存在多个前置return语句,后续筛选逻辑根本不会执行,而且还有变量名笔误,修改后的代码如下:

public function fetch_data(Request $request) 
{
    // 先注释掉所有测试用的前置return语句
    // return 'test';
    // return $request->all();
    // return $request->daterange;
    
    $user = Auth::user();
    $storesID = $user->storesID->pluck('id');
    $stores = $user->stores;
    
    // 从请求中获取前端传过来的起止日期参数
    $startDate = $request->input('startDate');
    $endDate = $request->input('endDate');
    
    // 注意:你原来的where条件里两个字段名不一致,一个是request_date一个是date,这里统一改成request_date,根据你的实际表字段调整
    $accessories = AccessoryRequest::where('request_date', ">=", $startDate)
        ->where('request_date', "<=", $endDate)
        ->get();
    
    // 如果是接口请求返回json,就用下面这句
    return response()->json([
        'stores' => $stores,
        'accessories' => $accessories
    ]);
    
    // 如果是返回页面视图,就注释上面的json返回,用下面这句
    // return view('accessorydetails.index')
    // ->with('stores', $stores)
    // ->with('accessories', $accessories);
}

可选方案:后端拆分日期范围字符串

如果你不想在前端拆分参数,要直接传01/01/2021 - 01/15/2021格式的完整日期范围字符串给后端,可以把前端axios的参数改为daterange: $('input[name="daterange"]').val(),后端按如下逻辑拆分即可:

$dateRange = $request->input('daterange');
list($startStr, $endStr) = explode(' - ', $dateRange);
$startDate = \Carbon\Carbon::createFromFormat('m/d/Y', $startStr)->format('Y-m-d');
$endDate = \Carbon\Carbon::createFromFormat('m/d/Y', $endStr)->format('Y-m-d');

后续筛选逻辑和上述第二步一致即可。

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:24:04