【问题标题】:Laravel, Date range filter between two columnLaravel,两列之间的日期范围过滤器
【发布时间】: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 作为我的过滤器,而不是来自我的索引
  • 所以你需要在数据表端而不是服务器端过滤吗?
  • 是的,类似的

标签: jquery laravel


【解决方案1】:

就这样吧

$query->whereDate('periode_start', '>=', $datepicker_from)
->whereDate('periode_end', '<=', $datepicker_to);

现在您可以在两列之间获得过滤日期范围

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2023-03-30
    • 2019-05-29
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多