@kostya1704

Как в ларавел сделать пагинацию для запроса с параметрами?

Есть запрос:
$poisks = DB::table('items')
 ->where('brand',$brand)
 ->where('location',$location)
 ->whereIn('fuel_type',[$fuel_type])
 ->whereBetween('price', [$price_from, $price_to])
 ->whereIn('body_type', [$body_type])
 ->whereIn('fuel_type', [$fuel_type])
 ->whereIn('model', [$model])
 ->paginate(10);

Запрос выдаёт результат первой страницы, есть блок пагинации , при переходе на следующую ну или любую иную страницу пагинации выдаёт - "Undefined index: brand" и тд. по всему $_POST.
Но в инструкции по ларавел - "На данный момент операции страничного вывода, которые используют оператор groupBy, не могут эффективно выполняться в Laravel. Если вам необходимо использовать groupBy для постраничного набора результатов, рекомендуется делать запрос в БД и создавать экземпляр страничного вывода вручную.
Это можно сделать создав либо экземпляр Illuminate\Pagination\Paginator, либо экземпляр Illuminate\Pagination\LengthAwarePaginator, в зависимости от ситуации.
"
Довольно скудная инфа.
Так значит нет в ларавел встроенной пагинации ?
  • Вопрос задан
  • 769 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если я вас понял, можете просто вызвать методappends($request->query()) на коллекции.

Например, в вашем случае:

$poisks = DB::table('items')
 ->where('brand',$brand)
 ->where('location',$location)
 ->whereIn('fuel_type',[$fuel_type])
 ->whereBetween('price', [$price_from, $price_to])
 ->whereIn('body_type', [$body_type])
 ->whereIn('fuel_type', [$fuel_type])
 ->whereIn('model', [$model])
 ->paginate(10)
->appends($request->query());


Саму пагинацию в blade-шаблоне выводите так:
{{ $poisks->links() }}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы