Laravel LengthAwarePaginator возвращает данные не в одном объекте

Так что я сделал пользовательскую нумерацию страниц в Laravel 5.4, используя

Illuminate\Pagination\LengthAwarePaginator;
\Illuminate\Pagination\Paginator;

он возвращает правильные данные и формат во время первого запроса, но второй и другие запросы не форматируются так же, как первый.

Поэтому мой вопрос заключается в том, как сделать так, чтобы данные всегда возвращались в одном объекте, таком как первый запрос?

Ниже приведен мой код о том, как я сделал свой пользовательский paginator и журнал консоли.

$data = collect($playerMatchArr);

$result = new LengthAwarePaginator(
    $data->forPage($page, 3), 
    $data->count(), 
    $limit, 
    $page
);

консольный результат

3 ответа

Я обнаружил, что это потому, что ключи страницы 2 или более не начинаются с 0 (нуля), теперь можно просто сгенерировать новую коллекцию или массив, ключи которого начинаются с 0 (нуля).

Для этого есть два пути:
Первый способ

      array_values($data->forPage($page, 3));

Путь второй

      collect([...$data->forPage($page, 3)]);

В целом вы можете исправить это, реорганизовав свой код следующим образом:

      $data = collect($playerMatchArr);

$result = new LengthAwarePaginator(
    array_values($data->forPage($page, 3)), 
    $data->count(), 
    $limit, 
    $page
);

Это ответ laravel json, который делает это. Я тоже потратил пару часов на это

наконец-то удалось преобразовать ответ на внешний интерфейс, получив ответ как

Object.values(response.data.data)

И наконец я получил результаты

ht tps:https://stackru.com/images/e8eace962e8cb49c3c5d585877503207d420984c.png

      $data = collect($playerMatchArr);
$dataPerPage = $data->forPage($page, 3);
$dataPerPage = array_values($dataPerPage->toArray());
$dataPerPage = Collection::make($dataPerPage);
$result = new LengthAwarePaginator(
    $dataPerPage,
    $data->count(),
    $limit,
    $page
);
Другие вопросы по тегам