Laravel Raw Query с Yajra Datatable, Datatable serverSage Pagianation не работает - PullRequest
0 голосов
/ 10 января 2019

Мой пользовательский запрос

$statistics_sql = "SELECT  l.*
FROM    (SELECT * FROM DB1.dept ORDER BY parent_id, id) d, 
(SELECT @pid := 2058) initialisation, DB1.users u, DB2.feedb_list l
WHERE   (find_in_set (d.parent_id, @pid) > 0 OR find_in_set (d.id, @pid) > 0)
AND     length(@pid := concat(@pid, ',', d.id))
AND     u.department_id=d.id
AND     l.uid=u.id
AND     u.deleted_at IS NULL ";

$feedbacks  = DB::select(DB::raw($statistics_sql));
$feedbacks  = collect($feedbacks);

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

JS Script

var datatable = $('#list').DataTable({
    lengthMenu: [
        [ 10, 25, 50, 100 ],
        [ '10', '25', '50','100']
    ],
    "pageLength": 50,
    "pagingType": "full_numbers",
    dom: 'lBfrtip',
    processing: true,
    serverSide: true,
    "searching": false,
    //stateSave: true,
    ajax: {
        url:  '{!! route('all-list-ajax') !!}',
        type: 'post',
        "data":function (d) {
            //....
        }
     },
    columns: [
        { .... }
    ]
});

Разбивка на страницы сервера Yajra Datatable на стороне выше не работает, как получить правильную нумерацию страниц с помощью Datatable с помощью пользовательских запросов.

1 Ответ

0 голосов
/ 10 января 2019

попробуйте удалить коллекцию:

$statistics_sql = "SELECT  l.*
FROM    (SELECT * FROM DB1.dept ORDER BY parent_id, id) d, 
(SELECT @pid := 2058) initialisation, DB1.users u, DB2.feedb_list l
WHERE   (find_in_set (d.parent_id, @pid) > 0 OR find_in_set (d.id, @pid) > 0)
AND     length(@pid := concat(@pid, ',', d.id))
AND     u.department_id=d.id
AND     l.uid=u.id
AND     u.deleted_at IS NULL ";

$feedbacks  = DB::select(DB::raw($statistics_sql));
//$feedbacks  = collect($feedbacks);

// FOR YAJRA DATATABLES VERSION > 8.0
return Datatables::of($feedbacks)->toJson();
// FOR YAJRA DATATABLES VERSION < 7.0
return Datatables::of($feedbacks)->make(true);
...