Я использую таблицы данных для отображения таблицы с примерно 15 ~ 20 тысячами строк с плагином Laravel и Yajra. Это не проблема отображения информации. Проблема возникает, когда я пытаюсь экспортировать данные с помощью кнопок (то есть в электронную таблицу Excel): если я пытаюсь экспортировать в PDF или XLSX запрос с достаточным количеством строк, браузер зависнет (когда это маленький запрос, проблем нет).
Позже я понял, что, хотя я использовал ajax для извлечения данных с самого начала, он не использовал обработку на стороне сервера, а просто извлекал все сразу. Поэтому я попытался добавить «serverSide: true», и когда я это сделал, были загружены только 10 записей. Больше ничего не было загружено.
Код контроллера:
public function getDatatable()
{
return Datatables::of(Dev_BCH::query())->make(true);
}
Код JavaScript:
var table = $('#BCHtable').DataTable( {
orderCellsTop: true,
fixedHeader: false,
responsive: true,
oSearch: {"bSmart": false},
ajax: "{{ route('datatableInvBCH') }}",
dom: 'Bfrtip',
buttons: {
buttons: [
{ extend: 'pdfHtml5', className: 'pdfButton', orientation: 'landscape' },
$.extend( true, {}, buttonCommon, {
extend: 'excelHtml5', className: 'excelButton',
text: 'Excel filtrado'
} ),
{
text: 'Excel completo',
action: function ( e, dt, node, config ) {
$('#loader').show();
$('#holder').show();
getExcel("{{route('exportBCH')}}");
}
}
]
},
language:
{"url": "{{asset('assets/dt/Spanish.lang')}}"}
,
columns: [
{data: 'id', name: 'id', visible: false},
{data: 'alias', name: 'alias'},
{ data: 'rotulo', name: 'rotulo'},
{ data: 'serie', name: 'serie'},
{ data: 'tipo', name: 'tipo'},
{ data: 'marca', name: 'marca'},
{ data: 'modelo', name: 'modelo'},
{ data: 'nombre', name: 'nombre'},
{ data: 'rut', name: 'rut'},
{ data: 'region', name: 'region'},
{ data: 'site', name: 'site', width: "100px"},
{ data: 'fecha_reporte', name: 'fecha_reporte', visible:false},
{ data: 'ultima_conexion', name: 'ultima_conexion', visible:false}
],
...
});
Есть ли что-нибудь, что я мог бы попытаться, по крайней мере, загрузить на сервер отфильтрованных данных, возможно, сделав свою собственную кнопку.