如何使用查询构建器在开始和结束之间过滤日期

时间:2021-01-09 12:08:47

标签: laravel-5

我已经放置了两个输入标签来获取开始日期和结束日期。我想使用 laravel 查询构建器的 wherebetween 子句来接收这些输入并在这两天之间取回数据

blade.php 文件

<form action="{{ route('search.between.dates',[$expense_category_data[0]->id]) }}" method="POST">
                    @csrf
                    <h3 style="color:Blue; text-align: center;text-decoration:underline"><b>Filter Date </b></h3>
                    <input class="form-control" type="text" id="datepicker1" name="start_date" placeholder="Start Date" style="width: 20%; display: inline-block; margin-left:20%; margin-bottom: 2% ">
                    <input class="form-control" type="text" id="datepicker2" name="end_date" placeholder="End Date" style="width: 20%; display: inline-block; margin-left:20%; margin-bottom: 2%">
                    <br>
                    <button type="submit" class="btn btn-success" style="position: absolute;
                    left: 45%;">Find Expenses</button>
                </form>

脚本

<script>
$( function() {
    $( "#datepicker1" ).datepicker({
        dateFormat: 'dd-mm-yy'
    });
} );
$( function() {
    $( "#datepicker2" ).datepicker({
        dateFormat: 'dd-mm-yy'
    });
} );
</script>

控制器

public function search_between_dates(Request $request,$exp_category_id){
    $start_date = dmyToYmd($request->start_date);
    $end_date = dmyToYmd($request->end_date);

    $expense_category_data = DB::table('expense_category')
                    ->leftjoin('expense_table','expense_category.id','=','expense_table.exp_category')
                    ->select('expense_category.id as category_id','expense_category.exp_category AS category_name','expense_category.exp_category_details','expense_category.exp_category_image','expense_table.*')
                    ->where('expense_category.id',$exp_category_id)
                    ->whereBetween('expense_table.exp_date',[date($start_date),date($end_date)])
                    ->get();                        
    return view('admin.Expense_sheet.view_expense_category_details',compact('expense_category_data'));
}

1 个答案:

答案 0 :(得分:0)

我不知道函数 dmyToYmd 在做什么。 My Sql 使用 Y-m-d 的日期格式,而您的 datepicker 使用格式 dd-mm-yy 这就是它没有获取预期结果的原因。您将需要使用碳来格式化日期。

->whereBetween('expense_table.exp_date',[Carbon/Carbon::createFromFormat('d-m-y', $start_date)->format('Y-m-d'),Carbon/Carbon::createFromFormat('d-m-y', $end_date)->format('Y-m-d')])

/*
 it is sending the format
 dd-mm-yy => 01-01-21

 Mysql required format
 Y-m-d => 2021-01-01
*/
相关问题