如何在Laravel中导出具有日期范围的MYSQL数据?

时间:2019-09-20 18:22:42

标签: javascript mysql laravel export-to-csv export-to-excel

这个问题对于你们来说可能很简单,但是我已经解决了。我能够过滤出具有日期范围的数据并在视图中显示。

但是现在,我想以CSV / Excel格式导出这些搜索/过滤的结果。如果您能解决我的问题,那将是一个很大的帮助。

非常感谢!

DateRangeController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class DateRangeController extends Controller
{
    function index(Request $request)
    {
     if(request()->ajax())
     {
      if(!empty($request->from_date))
      {
       $data = DB::table('users_info')
         ->whereBetween('ptdate', array($request->from_date, $request->to_date))->get();
      }
      else
      {
       $data = DB::table('users_info')->get();
      }
      return datatables()->of($data)->make(true);
     }
     return view('daterange');
    }
}
?>

daterange.blade.php

        <div class="row input-daterange">
            <div class="col-md-2">
                <input type="text" name="from_date" id="from_date" class="form-control" placeholder="From Date" readonly />
            </div>
            <div class="col-md-2">
                <input type="text" name="to_date" id="to_date" class="form-control" placeholder="To Date" readonly />
            </div>
            <div class="col-md-4">
                <button type="button" name="filter" id="filter" class="btn btn-primary">Filter</button>
                <button type="button" name="refresh" id="refresh" class="btn btn-default">Refresh</button>
            </div>
        </div>
<script>
$(document).ready(function(){
 $('.input-daterange').datepicker({
  todayBtn:'linked',
  format:'yyyy-mm-dd',
  autoclose:true
 });

 load_data();

 function load_data(from_date = '', to_date = '')
 {
  $('#order_table').DataTable({
   processing: true,
   serverSide: true,
   ajax: {
    url:'{{ route("daterange.index") }}',
    data:{from_date:from_date, to_date:to_date}
   },
  });
 }

 $('#filter').click(function(){
  var from_date = $('#from_date').val();
  var to_date = $('#to_date').val();
  if(from_date != '' &&  to_date != '')
  {
   $('#order_table').DataTable().destroy();
   load_data(from_date, to_date);
  }
  else
  {
   alert('Both Date is required');
  }
 });

 $('#refresh').click(function(){
  $('#from_date').val('');
  $('#to_date').val('');
  $('#order_table').DataTable().destroy();
  load_data();
 });

});
</script>

Route.php

Route::get('/daterange', 'DateRangeController@index');
Route::post('/daterange', 'DateRangeController@export');
Route::resource('daterange', 'DateRangeController');

2 个答案:

答案 0 :(得分:1)

Datatable提供了用于导出csv,pdf等的按钮。您只需使用

$('#order_table').DataTable( {
    dom: 'Bfrtlp',
    buttons: ['csv','pdf', 'excel','print']
} );

您可以看一下文档-

https://editor.datatables.net/examples/extensions/exportButtons.html

答案 1 :(得分:0)

您可以使用Laravel Excel来执行此操作,请查看文档:{​​{3}}