Laravel 5 如何使用laravel和data table在html表中加载大量数据
我有预订数据。目前它有10000行。如何使用laravel和datatable列出数据而不占用太多的加载时间。目前,我试图列出预订,但初始加载需要20秒。当前正在使用ajax请求从数据库获取所有数据。请检查我的代码并更正 我指的是“和” BookingController.phpLaravel 5 如何使用laravel和data table在html表中加载大量数据,laravel-5,datatables,laravel-5.4,Laravel 5,Datatables,Laravel 5.4,我有预订数据。目前它有10000行。如何使用laravel和datatable列出数据而不占用太多的加载时间。目前,我试图列出预订,但初始加载需要20秒。当前正在使用ajax请求从数据库获取所有数据。请检查我的代码并更正 我指的是“和” BookingController.php public function index() { return view('backend.bookings'/*, ['bookingDetails' => $bookings]*
public function index()
{
return view('backend.bookings'/*, ['bookingDetails' => $bookings]*/);
}
public function dataTables(Request $request)
{
$bookings = Booking::where('is_delete', 0)
->get();
// Functionality for laravel datatables
$bookingDetails = Datatables::collection($bookings)
->addColumn('action', function ($bookings) {
return '<a href="/bookings/'.$bookings->_id.'" class="btn btn-xs btn-danger deleteEvent" data-id="'.$bookings->_id.'"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
})
->make(true);
return $bookingDetails;
}
/* Listing bookings */
Route::get('/bookings', 'BookingController@index');
/* Show datatable page */
Route::post('/bookings/datatables', 'BookingController@dataTables')->name('bookings.datatables');
booking.js
/* Functionality for data table begin */
var table = $('#dataTable').DataTable({
/*"processing": true,
"serverSide": true,*/
/*"dom": '<"toolbar">frtip',*/
"order": [],
"ajax": {
"type": "POST",
"url": '/admin/bookings/datatables',
"contentType": 'application/json; charset=utf-8',
"data": { "_token": "" }
},
/*"ajax": '/bookings/datatables',*/
"dataType": "jsonp",
"columns": [
{"data": function(data){
return '<input type="checkbox" name="id[]" value="'+ data._id +'" />';
}, "orderable": false, "searchable": false, "name":"_id" },
{"data": function ( data ) {
if(!data.invoice_number){
return '<span class="label label-default">No data</span>'
}
else {
return '<a class="nounderline modalBooking" data-toggle="modal" data-target="#bookingModal_'+ data._id +'" data-modalID="'+ data._id +'">'+data.invoice_number+'</a>';
}
}, "name": "invoice_number"},
{"data": "usrEmail", "name": "usrEmail"},
{"data": "checkin_from", "name": "checkin_from"},
{"data": "reserve_to", "name": "reserve_to"},
{"data": "beds", "name": "beds"},
{"data": "dormitory", "name": "dormitory"},
{"data": "sleeps", "name": "sleeps"},
{"data": "status", "name": "status"},
{"data": "payment_status", "name": "payment_status"},
{"data": "payment_type", "name": "payment_type"},
{"data": "total_prepayment_amount", "name": "total_prepayment_amount"},
{"data": "txid", "name": "txid"},
{"data": "action", "name": "action", "orderable": false, "searchable": false}
],
"columnDefs": [{
"defaultContent": "-",
"targets": "_all"
}],
});
$('#dataTable tfoot th').each( function () {
var title = $(this).text();
$(this).html( '<input type="text" placeholder="Search ' + title + '"/>' );
});
数据表开始的功能*/
变量表=$('#dataTable')。dataTable({
/*“处理”:对,
“服务器端”:正确*/
/*“dom”:“frtip”*/
“订单”:[],
“ajax”:{
“类型”:“职位”,
“url”:“/admin/bookings/datatables”,
“contentType”:“application/json;charset=utf-8”,
“数据”:{U令牌”:“”}
},
/*“ajax”:“/bookings/datatables”*/
“数据类型”:“jsonp”,
“栏目”:[
{“数据”:函数(数据){
返回“”;
},“orderable”:false,“searchable”:false,“name”:“\u id”},
{“数据”:函数(数据){
如果(!数据.发票号){
返回“无数据”
}
否则{
返回“”+数据。发票号+“”;
}
},“名称”:“发票号”},
{“数据”:“usrEmail”,“名称”:“usrEmail”},
{“data”:“checkin_from”,“name”:“checkin_from”},
{“data”:“reserve_to”,“name”:“reserve_to”},
{“数据”:“床”,“名称”:“床”},
{“数据”:“宿舍”,“名称”:“宿舍”},
{“数据”:“睡眠”,“名称”:“睡眠”},
{“数据”:“状态”,“名称”:“状态”},
{“数据”:“付款状态”,“名称”:“付款状态”},
{“数据”:“付款类型”,“名称”:“付款类型”},
{“数据”:“预付款总额”,“名称”:“预付款总额”},
{“数据”:“txid”,“名称”:“txid”},
{“数据”:“操作”,“名称”:“操作”,“可订购”:false,“可搜索”:false}
],
“columnDefs”:[{
“默认内容”:“-”,
“目标”:“所有人”
}],
});
$('#dataTable tfoot th')。每个(函数(){
var title=$(this.text();
$(this.html(“”);
});
我也遇到了同样的问题,现在我决定采用另一种方法,它依赖于在客户机上保存数据库 基本上,客户机在连接时下载数据库并将其存储在JSON变量中。加载页面时,只需向其传递一个命令,该命令将拉动数据库并呈现表 如果您希望维护当前的系统,您可以使用它,但是任何类型的数据过滤都应该通过另一个AJAX请求来管理,而不是依赖于客户端