#laravel #eloquent #pagination #laravel-5.7
#laravel #eloquent #разбивка на страницы #laravel-5.7
Вопрос:
У меня есть разбитая на страницы коллекция, подобная
Post::where('active', 1)->paginate(10)
и я хотел бы получить начальную и конечную позиции текущей части коллекции.
Я имею в виду, что если страница равна 2, а предел страницы равен 10, то начальная позиция равна 11, а конечная позиция равна 20. Мне нужно отобразить текст, подобный продуктам, от 11 до 20 из 284 продуктов. Возможно ли это или нет?
Ответ №1:
Следующие методы вернут нужную вам информацию:
$pagination = Post::where('active', 1)->paginate(10);
$pagination->firstItem(); // Returns the number of the first item from the current page
$pagination->lastItem(); // Returns the number of the last item from the current page
$pagination->total(); // Returns the total amount of items
Вы можете найти все доступные методы здесь.
Если вы преобразуете разбивку на страницы в массив или JSON, он автоматически добавит всю метаинформацию.
Из документов:
JSON из paginator будет содержать метаинформацию, такую как
total
,current_page
,last_page
и многое другое. Фактические объекты результата будут доступны через ключ данных в массиве JSON. Вот пример JSON, созданного путем возврата экземпляра paginator из маршрута:
{
"total": 50,
"per_page": 15,
"current_page": 1,
"last_page": 4,
"first_page_url": "http://laravel.app?page=1",
"last_page_url": "http://laravel.app?page=4",
"next_page_url": "http://laravel.app?page=2",
"prev_page_url": null,
"path": "http://laravel.app",
"from": 1,
"to": 15,
"data":[
{
// Result Object
},
{
// Result Object
}
]
}