Example #1
0
 /**
  * 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;
 }