这个问题对于你们来说可能很简单,但是我已经解决了。我能够过滤出具有日期范围的数据并在视图中显示。
但是现在,我想以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');
答案 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}}