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
);