【问题标题】:How to export MYSQL data with date range in Laravel?如何在 Laravel 中导出具有日期范围的 MYSQL 数据?
【发布时间】:2019-09-20 18:22:42
【问题描述】:

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

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

非常感谢!

日期范围控制器.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');

【问题讨论】:

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


    【解决方案1】:

    Datatable 提供了导出 csv、pdf 等的按钮。你可以简单地使用

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

    你可以看看文档-

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

    【讨论】:

    • 你好@SN N,上面的方法工作正常,但我想在 maatwebsite 的帮助下导出日期范围。如果可能的话,你能帮我解决这个问题吗?谢谢。
    【解决方案2】:

    您可以使用 Laravel Excel 执行此操作,请查看文档:https://docs.laravel-excel.com/3.1/exports/

    【讨论】:

    • 你好,肯。我使用 maatwebsite 导出数据,非常有用。感谢您的解决方案,但我不知道如何将此 maatwebsite 导出功能与日期范围过滤器一起使用。 @SN N 的解决方案帮助了我,但如果您知道如何在 maatwebsite 中使用日期范围导出,那将是一个很大的帮助。再次感谢...
    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多