Как отсортировать коллекцию по результату нумерации страниц - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть эта коллекция, которую я получил с помощью запроса paginate:

$apps = $query->paginate(10);

Результат примерно такой:

enter image description here

Я бы хотел отсортировать эту коллекцию перед отправкой, особенно массив "data". Я много чего перепробовал с "sortBy" и "sortByDesc". Безуспешно. Каждый раз, когда я использую эти методы, нумерация страниц «нарушена».

Как отсортировать этот вид JSON, полученный путем нумерации страниц?

Merci Дом

Ответы [ 2 ]

0 голосов
/ 09 июня 2019
use Illuminate\Pagination\LengthAwarePaginator;


$sortedApps = $query->get()->sortBy('name');

$result = $this->paginateCollection($sortedApps,50);


public function paginateCollection(
    $collection, 
    $perPage, 
    $pageName = 'page', 
    $fragment = null
) : LengthAwarePaginator
    {
        $currentPage = LengthAwarePaginator::resolveCurrentPage($pageName);
        $currentPageItems = $collection->slice(($currentPage - 1) * $perPage, $perPage);
        parse_str(request()->getQueryString(), $query);
        unset($query[$pageName]);
        $paginator = new LengthAwarePaginator(
            $currentPageItems,
            $collection->count(),
            $perPage,
            $currentPage,
            [
                'pageName' => $pageName,
                'path' => LengthAwarePaginator::resolveCurrentPath(),
                'query' => $query,
                'fragment' => $fragment
            ]
        );

        return $paginator;
    }
0 голосов
/ 13 ноября 2018

Вы можете использовать orderBy, orderByDesc или orderByRaw, чтобы упорядочить запрос перед разбиением на страницы результатов:

документы:

$apps = $query->orderBy('created_at')->paginate(10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...