Нумерация страниц Laravel с использованием ресурсов API - PullRequest
0 голосов
/ 11 октября 2019

Пагинация в Laravel имеет другую структуру, когда возвращается сама по себе и через ресурс API.

return $query->paginate(request('per_page'));

возвращает нумерацию страниц с такой структурой:

{
    "current_page": 1,
    "data":[...],
    "first_page_url": "http://user-service.test/api/users?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://user-service.test/api/users?page=1",
    "next_page_url": null,
    "path": "http://user-service.test/api/users",
    "per_page": 15,
    "prev_page_url": null,
    "to": 10,
    "total": 10
}

С другой стороны, отправкаpaginator через ресурс API, подобный этому:

return new UserCollection($query->paginate(request('per_page')));

возвращает эту структуру:

{
"data":[...],
"links": {
    "first": "http://user-service.test/api/users/searches?page=1",
    "last": "http://user-service.test/api/users/searches?page=6",
    "prev": null,
    "next": "http://user-service.test/api/users/searches?page=2"
    },
"meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 6,
    "path": "http://user-service.test/api/users/searches",
    "per_page": "1",
    "to": 1,
    "total": 6
    }
}

Мне нужно иметь одинаковую структуру для обоих типов. Я что-то не так делаю?

1 Ответ

0 голосов
/ 11 октября 2019

Это потому, что вы создали Eloquent Resource .

Как вы можете видеть в документе, он берет $this->collection и оборачивает его в формате заказчика.

Если вы хотите иметь тот же формат, вам не нужно возвращать UserCollection, просто верните $query->paginate(request('per_page'))

Не видя больше вашего кода и как вы используете UserCollection класс, трудно рекомендовать оставить его или удалить. Также, пожалуйста, прочитайте обзор этой концепции здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...