【问题标题】:Filtering the data on the basis of daterangepicker in laravellaravel中基于daterangepicker过滤数据
【发布时间】:2021-12-20 16:01:46
【问题描述】:

我想将日期范围过滤器应用于我的特定页面。只有一个日期范围选择器允许您从日历中选择一个范围,并显示在一个变量中。我正在获取该变量中的数据,但我不知道通过将单个变量值拆分为两个值(从和到)来过滤我的数据库数据的确切方法。

这是我的输入框--

<input type="text" class="form-control" name="daterange" value="01/01/2021 - 01/15/2021" />

下面是我的日期范围的具体脚本 -

 $(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')
                    .then(response => {
                        data = this.form;
                    })
            });
        });

这是我的 web.php

Route::get('fetchdata', 'AccessoryController@fetch_data')->name('accessory.date.filter');

这是我需要帮助的控制器代码,目前日期范围选择器正在工作。它在控制台中给了我正确的选择。 "选择的新日期范围:2021-11-04 到 2021-11-10(预定义范围:未定义)"

而且我的路线也在使用 return 'test' 但我不知道如何在后端获取数据。

 public function fetch_data(Request $request) 
   {
       //return 'test';
       return $request->all(); // This returns nothing
       $user = Auth::user();
       $storesID = $user->storesID->pluck('id');
       $stores = $user->stores;
       return $request->daterange;
       $accessory = AccessoryRequest::where('request_date', ">=", $request->startDate)->where('date', "<=", $request->endDate)->get(); //how can i filter
       return $accessory;
       return view('accessorydetails.index')
       ->with('stores', $stores)
       ->with('accessories', $accessories);
   }

【问题讨论】:

    标签: laravel vue.js daterangepicker


    【解决方案1】:

    你没有给服务器放任何参数:

    axios.get('/fetchdata', {
            params: {
                startDate: start.format('YYYY-MM-DD'),
                endDate: end.format('YYYY-MM-DD')
            }
        }).then(response => {
            data = this.form;
        });
    

    关于AccessoryRequest,我猜你的意思是辅助Eloquent对象与数据库一起工作

    $accessory = AccessoryRequest::where('request_date', "&gt;=", $request-&gt;startDate)-&gt;where('date', "&lt;=", $request-&gt;endDate)-&gt;get(); //how can i filter

    我不确定日期字段的名称如何,但想法是这样做

    $accessory = AccessoryRequest::where('created_at', ">=", $request->get('startDate'))
        ->where('created_at', "<=", $request->get('endDate'))
        ->get();
    

    【讨论】:

    • 如果我检查 return $request->all(),它仍然返回空的 json 响应。
    • 如果你打开&lt;your_local_host&gt;/fetchdata?startDate=2020-12-12&amp;endDate=2021-02-01 然后 $request->all() 应该返回数据。如果发送了这些参数,您是否检查过浏览器开发者工具的网络选项卡?
    • 那么我们确实需要更改web.php,因为我们在调用路由时没有传递参数,并且在网络选项卡中,没有发送任何参数。它向我显示 fetchdata 作为文件名,它不返回任何响应。
    • @Yashima JS 中的问题,web.php 是正确的。我已经更新了我的评论。请尝试(问题是我们如何使用 axios github.com/axios/axios 传递参数)
    • 我不知道为什么,但是 get 方法对我不起作用!正如你所说,我用post方法休息做到了。所以谢谢你的帮助!
    【解决方案2】:

    在 web.php 中 --

    Route::post('fetchdata', 'AccessoryController@fetch_data')->name('accessory.date.filter');
    

    在脚本文件中

     $(function () {
                $('input[name="daterange"]').daterangepicker({
                "startDate": "11/01/2021",
                "endDate": "11/07/2021"
                }, 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.post('/fetchdata/', {
                            startDate: start.format('YYYY-MM-DD'),
                            endDate: end.format('YYYY-MM-DD'),
                        }).then(response => {
                            $(location).attr('href', '/accessory')
                            //console.log(startDate);
                        });
                });
            });
    

    Axios 没有使用 get 方法。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 2018-09-11
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 2021-05-23
      • 2022-01-16
      • 2021-10-27
      相关资源
      最近更新 更多