'Export Excel with 1Million records in laravel using yajra Datatable when serverSide is true

I want to download excel using yajra Datatable

Here is my blade file code:

var oTable = $('#datatable_rows').DataTable({

            "dom": '<"top"if>rt<"bottom"lBp><"clear">',
            processing: true,
            serverSide: true,
            buttons : [{
                extend : 'excel',
                text : '<i class="flaticon2-download"></i>',
                title : '',
                className: "btn export",
                filename : '13xyz-export',
                exportOptions : {
                    page : 'all',
                }
            }],
            searchable: true,

            scrollX: true,
            bSort: false,

            pageLength: 500,
            lengthMenu: [10, 25, 50, 100, 500, 10000],

            ajax: {
                url:'{{ route('xyz.index') }}',
                data: function(d) {
                    d.client_name=$('#client_name').val(),
                    d.orderby=$('#hidden_field').val(),
                    d.asc_desc=$('#asc_desc').val()
                }
            },
            ordering:false,
            columns: [
            

            {
                searching: true,

                data: "xyz0"

            },

            {
                searching: true,

                data: "xyz1"

            },

            {
                searching: true,

                data: "xyz2"

            },

            {
                searching: true,

                data: "xyz3"

            },

            {

                searching: true,

                "data": 'action',

            },



            ]

        });

Controller

if ($request->ajax())
{
$query = Xyz::select('*')->orderby($request->orderby , $asc_desc)->latest();

return Datatables::of($query)

            ->addColumn('action', function ($row) {
                $btn = view('layout.editAction')->with(['ID' => $row->ID, 'route' => 'xuz', 'per_value'=>'myxyz'])->render();
                return $btn;
            })
            ->addColumn('checkbox', function ($row) {
                $chk = view('layout.checkbox')->with(['ID' => $row->ID])->render();
                return $chk;
            })
           
            ->setRowClass(function () {
                return 'row-move';
            })
            ->setRowId(function ($row) {
                return 'row-' . $row->ID;
            })
            ->rawColumns(['action','checkbox'])
            ->make(true);
}
return view($this->view . '.index');

Here if I make serverSide as false it will go to error as 500 request time out. and if i am using serverSide as true it gives all data immediately but when i export file in excel it only gives the current page records.

When I press excel button I want to download all the records



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source