Серверная часть данных только возвращает данные в начале - PullRequest
0 голосов
/ 04 июня 2019

Я использую таблицы данных для отображения таблицы с примерно 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}
        ],
...
});

Есть ли что-нибудь, что я мог бы попытаться, по крайней мере, загрузить на сервер отфильтрованных данных, возможно, сделав свою собственную кнопку.

...