Laravel api pagination указать страницу - PullRequest
0 голосов
/ 09 июня 2019

Отправляю мой запрос с perPage и страницей в URL.То есть

url = users?page=0&perPage=10 //the get http url

Итак, я хотел бы разбить на страницы свой запрос модели, как указать страницу и perPage

User::paginate()

Итак, просматривая документы, я вижу, что могу добавить perPage, но не могуПосмотрите, как добавить страницу.так что из документации по laravel я вижу, что вы можете добавить perPage, как

User::paginate($request->get('perPage')) //perPage from url request

Но теперь, как мне добавить параметр страницы в paginate, чтобы я мог указать значение страницы, например, 0

КАК мне продолжить?

Я также проверил Этот вопрос , но он не показывает, как установить его в красноречивой модели страницы

Ответы [ 3 ]

4 голосов
/ 09 июня 2019

Метод paginate в Подсветка / База данных / Eloquent / Builder имеет следующую подпись:

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)

Пока у вас есть page=n (n для числа> 0, т.е.: page = 2) в вашем URL (строка запроса), вам не нужно передавать номер страницы в методе paginate. Если вы хотите, вы можете сделать это следующим образом:

$users = User::paginate(
    10, // per page (may be get it from request)
    ['*'], // columns to select from table (default *, means all fields)
    'page', // page name that holds the page number in the query string
    10 // current page, default 1
);

FYI, Laravel разрешает текущую страницу, используя метод Illuminate / Pagination / AbstractPaginator :: resolCurrentPage , который (resolver) был установлен в Метод Illuminate / Pagination / PaginationServiceProvider :: currentPageResolver при регистрации поставщика услуг.

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

protected $perPage = 10;

Итак, вы можете просто использовать User::paginate(), что даст вам 10 предметов / на страницу.

Примечание: ссылки на API даны для 5.6, но в этом случае это то же самое в более высоких версиях (AFAIK).

2 голосов
/ 09 июня 2019

Из официальной документации

the current page is detected by the value of the page query string argument on the HTTP request.

Laravel справится с этим автоматически. Так что тебе не нужно что-то делать.

1 голос
/ 09 июня 2019

Использование ->appends() метод

$users = User::paginate($request->get('perPage')); 
$users->appends($request->all());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...