首页 > 解决方案 > PHP Laravel 7 Yarja Datatables 错误加载 800k+ 数据

问题描述

数据表版本: 1.10.19

拉拉维尔: 7.3

880k记录数据

问题:显示前 10 个结果是正确的,有点慢,但是没问题...

Mostrando de 1 até 10 de 880.951 registros

所以,当我点击第二页时,显示:

Mostrando de 11 até 20 de 880.951 registros

但不显示记录:

Nenhum registro encontrado(未找到记录)

admin_template.blade.php

$.extend(true, $.fn.dataTable.defaults, {
order: [],
scrollX: true,
processing: true,
serverSide: true,
paging: true,
pageLength: 1

控制器:

public function index(Request $request)
{

if ($request->ajax()) {

        $limit = request('length');
        $skip = request('start');
        $count = Ip::getAll()->count();

        $table = Datatables::of(Ip::getAll()->take($limit)->skip($skip))->setTotalRecords($count);
        

        $table->addColumn('placeholder', ' ');
        $table->addColumn('actions', ' ');

        $table->editColumn('actions', function ($row) {
            $viewGate      = 'ip_show';
            $crudRoutePart = 'ip';

            return view('partials.datatablesActionsInfo', compact(
                'viewGate',
                'crudRoutePart',
                'row'
            ));
        });
        $table->rawColumns(['actions', 'placeholder']);

        return $table->make(true);
    }

index.php(在 admin_template.blade.php 内)

<table class=" table table-bordered table-striped table-hover ajaxTable datatable datatable-ip">
                    <thead>
                        <tr>
                            <th width="10">

                            </th>
                            
                            <th>
                                {{ trans('cruds.ip.fields.name') }}
                            </th>
                            
                            <th>
                                &nbsp;
                            </th>
                        </tr>
                    </thead>
                </table>

<script>
$(function () {
let dtButtons = $.extend(true, [], $.fn.dataTable.defaults.buttons)

let dtOverrideGlobals = {
buttons: dtButtons, 
processing: true,
serverSide: true,

order: [[ 1, 'desc' ]],
pageLength: 10,
//iDisplayLength: 10, 

aaSorting: [],
ajax: "{{ route('info.ip.index') }}",
columns: [
    { data: 'placeholder', name: 'placeholder' },
    { data: 'nome', name: 'nome' },

    { data: 'actions', name: '{{ trans('global.actions') }}' }
    ],

    };

    $('.datatable-ip').DataTable(dtOverrideGlobals);
    $('a[data-toggle="tab"]').on('shown.bs.tab', function(e){
    $($.fn.dataTable.tables(true)).DataTable()
        .columns.adjust();
    });
    });
</script>

标签: phplaravelyajra-datatable

解决方案


推荐阅读