Конфликт с сортировкой и разбиением на страницы в laravel-datatable

Я работаю над проектом анализа данных. Я использую Laravel 5.6 и yajra / datatable (https://github.com/yajra/laravel-datatables) библиотека для разработки. Я сталкиваюсь с проблемами следующим образом:

Во-первых, я создал данные из построителя запросов:

 $querybuilder = $mydb->getQuery($expression);
return  Datatables::of($querybuilder)->make();

Однако функции orderBy () и take () библиотеки Datatable конфликтуют с моими функциями orderBy () и take () в моем $ querybuilder.

Например мой $querybuilder создан из $query->table(..)->where(..)->orderBy(second_column)->take(5)

Потому что get() функция $querybuilder не вызываться заранее, чтобы после того, как я положил его в Datatables::of($querybuilder)->make() запрос контролируется библиотекой Datatable, так что orderBy () и take () перезаписываются.

В соответствии с результатом, я думаю, он будет перезаписан следующим образом:

$querybuilder->orderBy(first_column)->take(10);

Кроме того, это также происходит с функциями поиска. Функция поиска ищется по всем записям таблицы, но не по первым 5 записям.

Мое решение в этом случае изменить Query Builder в Коллекция

Поэтому я использовал Datatables::of($querybuilder->get())->make() вместо Datatables::of($querybuilder)->make()

И это хорошо сработало в этом случае

к несчастью, в случае, если я хочу получить все данные из базы данных. PHP будет недостаточно памяти потому что данные слишком велики, и я получаю все это как Коллекция прежде чем передать его в Datatable. Если я приведу таблицу данных Query Builder он может обрабатывать объем данных функцией paginate ().

Таким образом, есть ли способ решить обе эти проблемы?

Я действительно предпочитаю использовать Query Builder для Datatable, а не для Collection, потому что этот способ помогает мне экономить ресурс при получении больших данных, а не изменять ограничение памяти в конфигурации PHP. Однако я не знаю решения для ограничения области данных из моего исходного запроса после передачи его в Datatable. Пожалуйста, помогите мне, если вы знаете решение.

Заранее спасибо,

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]