javascript - 如何在 Laravel 中导出具有日期范围的 MYSQL 数据?
问题描述
这个问题对你们来说可能很简单,但我已经完成了。我能够过滤出具有日期范围的数据并显示在视图中。
但是现在,我想在 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>
路由.php
Route::get('/daterange', 'DateRangeController@index');
Route::post('/daterange', 'DateRangeController@export');
Route::resource('daterange', 'DateRangeController');
解决方案
Datatable 提供了导出 csv、pdf 等的按钮。您可以简单地使用
$('#order_table').DataTable( {
dom: 'Bfrtlp',
buttons: ['csv','pdf', 'excel','print']
} );
您可以查看文档 -
https://editor.datatables.net/examples/extensions/exportButtons.html
推荐阅读
- docusignapi - RestAPI“创建”信封,其中信封属于与API用户不同的用户?
- python - 数据块中的熊猫分析
- sql - Oracle SQL 中的日期和交叉联接
- r - 如何在 gtsummary 包的特征表列中排序或更改行顺序?
- vue.js - 如果我在我的文本字段中输入,Vuetify 日期选择器不会保存正确的日期
- java - 问题 - 不兼容的类型:从 double 到 int 的可能有损转换
- c++ - 插入数组时写访问冲突
- ios - iOS Swift - Epson POS 打印机 - ePOS SDK - addTextSize - 如何将文本大小更改回原始大小?
- go - 如何将openbazaar-go部署到heroku
- terraform - 无法正确引用地图内列表中的值