Laravel 5 如何使用laravel和data table在html表中加载大量数据

Laravel 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]*

我有预订数据。目前它有10000行。如何使用laravel和datatable列出数据而不占用太多的加载时间。目前,我试图列出预订,但初始加载需要20秒。当前正在使用ajax请求从数据库获取所有数据。请检查我的代码并更正

我指的是“和”

BookingController.php

    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请求来管理,而不是依赖于客户端