jeudi 22 juin 2017

How to load huge data in table using laravel and data table

I have a bookings data. At-present it has 10000 rows. How can list data using laravel and datatable with out taking to0 much loading time. At-present I had tried to list booking but initial loading took 20seconds. Currently fetching all data from database using ajax request. Please check my code and correct me.

I am referring "http://ift.tt/1GoqM6J" and "https://datatables.net/"

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;
    }

web.php

    /* 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 + '"/>' );
    });



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2twHNhy
via IFTTT

Aucun commentaire:

Enregistrer un commentaire