/** * Function to handle pagination requests. * * @param \EchoIt\JsonApi\Request $request * @param \EchoIt\JsonApi\Model $model * @param integer $total the total number of records * @return \Illuminate\Pagination\LengthAwarePaginator */ protected function handlePaginationRequest($request, $model, $total = null) { $page = $request->pageNumber; $perPage = $request->pageSize; if (!$total) { $total = $model->count(); } $results = $model->forPage($page, $perPage)->get(array('*')); $paginator = new LengthAwarePaginator($results, $total, $perPage, $page, ['path' => Paginator::resolveCurrentPath(), 'pageName' => 'page[number]']); $paginator->appends('page[size]', $perPage); if (!empty($request->filter)) { foreach ($request->filter as $key => $value) { $paginator->appends($key, $value); } } if (!empty($request->sort)) { $paginator->appends('sort', implode(',', $request->sort)); } return $paginator; }