Простой ответ , используйте paginate()
метод:
$basicQuery = DB::select(DB::raw("<here is the big diffcult SQL query>"));
Однако paginate()
работает только для коллекций, и, поскольку у вас есть массив объектов, вам нужно повернутьсначала в коллекцию, используя метод forPage()
:
Метод forPage возвращает новую коллекцию, содержащую элементы, которые будут присутствовать на данном номере страницы. Метод принимает номер страницы в качестве первого аргумента и количество элементов, отображаемых на странице, в качестве второго аргумента:
$collection = collect($basicQuery);
$chunk = $collection->forPage(2, 3);
$chunk->all();
Сложный ответ : построитьСам экземпляр paginator:
$perPage = 10;
$page = $request->input("page", 1);
$skip = $page * $perPage;
if($take < 1) { $take = 1; }
if($skip < 0) { $skip = 0; }
$basicQuery = DB::select(DB::raw("<here is the big diffcult SQL query>"));
$totalCount = $basicQuery->count();
$results = $basicQuery
->take($perPage)
->skip($skip)
->get();
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($results, $totalCount, $take, $page);
return $paginator;
Я бы порекомендовал использовать метод paginate()
.
Вы можете узнать больше о Пагинация Ларавела .