Как экспортировать данные MYSQL с диапазоном дат в Laravel? - PullRequest
0 голосов
/ 20 сентября 2019

Эта проблема может быть очень простой для вас, ребята, но я с этим покончил.Я могу отфильтровать данные с диапазоном дат и отображением в представлении.

Но теперь я хочу экспортировать в 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 ]

1 голос
/ 20 сентября 2019

Datatable предоставляет кнопки для экспорта CSV, PDF и т. Д. Вы можете просто использовать

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

Вы можете посмотреть документацию -

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

0 голосов
/ 20 сентября 2019

Вы можете сделать это с помощью Laravel Excel, ознакомьтесь с документацией: https://docs.laravel -excel.com / 3.1 / exports /

...