2017-02-15 4 views
0

Я пытаюсь постраничной коллекцию с помощью длины известен Paginator так:Коллекция Laravel forPage удалена сортировка?

new LengthAwarePaginator($cases->forPage($request->get('page'), $per_page), $cases->count(), $per_page, $request->get('page')); 

Просто до этого я сортировки коллекции с помощью;

$cases->sortBy('inactive_percentage', SORT_REGULAR, 'desc'); 

Но результат, который я получаю от paginator, не то же самое. Сначала я получаю низкие неактивные проценты. Если я попробую per_page сказать 100, что больше, чем существующие записи, то результат сортируется правильно.

Как использовать paginator для обработки отсортированной коллекции?

+0

Вам действительно нужно сделать 'forPage '? Я думал, что это была работа паганистов. – apokryfos

+0

Если мне нужно использовать его вручную, я думаю, что я делаю – Rohan

ответ

1

Я не могу отправлять никаких комментариев ... лол Попытка получить мою репутацию до немного ...

Моя встреча с ручной постраничной навигации в конечном итоге мне приходится нарезать массиву сам ... Как согласно документу:

При ручном создании экземпляра Paginator, вы должны вручную «срез» массив результатов вы передаете постраничной навигации. Если вы не знаете, как это сделать, проверьте функцию array_slice PHP.

Пример одного из моих функций ручного контроллера массива нумерации страниц (paginators дела с основными массивами ...)

public function comments(){ 

     // DB::select returns an array, thus we have to build the paginator ourselves... 
     $comm = DB::select('select bla bla bla... 
          order by c.approved ASC, c.id DESC '); 

     // this basically gets the request's page variable... or defaults to 1 
     $page = Paginator::resolveCurrentPage('page') ?: 1; 

     // Assume 15 items per page... so start index to slice our array 
     $startIndex = ($page - 1) * 15; 

     // Length aware paginator needs a total count of items... to paginate properly 
     $total = count($comm); 

     // Eliminate the non relevant items... 
     $results = array_slice($comm, $startIndex, 15); 

     $comments = new LengthAwarePaginator($results, $total, 15, $page, [ 
      'path' => Paginator::resolveCurrentPath(), 
      'pageName' => 'page', 
     ]); 
     return view('backend/comments', compact('comments')); 
    } 

Надеется, что это помогает ...

+0

Да, мне пришлось в конце концов соединить его, чтобы ваш ответ был прав. благодаря – Rohan

Смежные вопросы