abhivachan's avatar

Datatable - Laravel 5.3 Pagination and Search Not working

I am using Laravel 5.3 and Datatable (Yajra). In the datatable, there is no pagination and all records are displaying. Even when i tried to show only 50 entries etc., Search within the datatable is also not working. Please help. Not sure, what i am missing in the code

My code is below

blade.php

  $('#btnGetData').click(function () {
                        var filters = $('#country_id').val() + '~' + $('#language_id').val() + '~' + $('#frequency_id').val() + '~' + $('#category_id').val() + '~' + $('#subcategory_id').val();
                        document.cookie = 'bulk_filter=' + filters;
                        var table = $('#bulk_contents').DataTable({
                            processing: true,
                            serverSide: true,
                            "paging": true,
                            "searching": true,
                            "displayStart": 0,
                            "lengthMenu": [[10, 25, 50,-1], [10, 25, 50,"All"]],
                            "lengthChange": true,
                            ajax: '{!! route('cms.contents.get_bulk_contents') !!}',
                            columns: [
                                { data: 'id', name: 'id' },
                                { data: 'country_id', name: 'country_id' },
                                { data: 'language_id', name: 'language_id' },
                                { data: 'frequency_id', name: 'frequency_id' },
                                { data: 'category_id', name: 'category_id' },
                                { data: 'subcategory_id', name: 'subcategory_id' },
                                { data: 'message', name: 'message' },
                                { data: 'status', name: 'status' },
                                { data: 'created_at', name:'created_at'}
                            ]
                        });
                    }
                );

controller.php

public function get_bulk_contents(){
        $filter = $_COOKIE['bulk_filter'];
        unset($_COOKIE['bulk_filter']);
        $filters = explode('~', $filter);
        $current_user = Sentinel::getUser();
        $cms_contents = DB::table('cms_contents')
            ->join('countries', 'countries.id', '=', 'cms_contents.country_id')
            ->join('languages', 'languages.id', '=', 'cmd_contents.language_id')
            ->join('frequencies', 'frequencies.id', '=', 'cms_contents.frequency_id')
            ->join('categories', 'categories.id', '=', 'cms_contents.category_id')
            ->join('subcategories', 'subcategories.id', '=', 'cms_contents.subcategory_id')
            ->where('cms_contents.country_id','=',$filters[0])
            ->where('cms_contents.language_id','=',$filters[1])
            ->where('cms_contents.frequency_id','=',$filters[2])
            ->where('cms_contents.category_id','=', $filters[3])
            ->where('cms_contents.subcategory_id','=',$filters[4])
            ->whereNull('cms_contents.deleted_at')
            ->where('status', '0');

        $cms_contents->orderBy('cms_contents.country_id', 'asc')->orderBy('cms_contents.language_id', 'asc')->orderBy('cms_contents.frequency_id', 'asc')->orderBy('cms_contents.category_id', 'asc')->orderBy('cms_contents.subcategory_id', 'asc')
            ->select('cms_contents.id', 'countries.name as country_id', 'languages.name as language_id', 'frequencies.duration as frequency_id', 'categories.name as category_id', 'subcategories.name as subcategory_id', 'cms_contents.message', 'cms_contents.status as status', 'cms_contents.created_at as created_at', 'cms_contents.is_automated');

        return Datatables::of($cms_contents)->make(true);
    }

Route

  Route::get('/drafts/bulk_publishing_form', array('as' => 'cms_contents.bulk_publishing_form', 'uses' => 'CmsContentsController@bulk_publishing_form'));
        Route::get('/drafts/get_bulk_contents', array('as' => 'cms_contents.get_bulk_contents', 'uses' => 'CmsContentsController@get_bulk_contents'));

0 likes
0 replies

Please or to participate in this conversation.