Как правильно отображать текущие данные с помощью нумерации страниц в laravel?

У меня проблемы с нумерацией страниц в Laravel 10. Я сгенерировал 13 данных из своей базы данных и нахожусь на первой странице, поэтому ожидаю увидеть что-то вроде

«Показано с 1 по 8 из 13 результатов»

но вместо этого мой код отображает сообщение

«Показано с 1 по 13 из 13 результатов»

Что я делаю не так? любая помощь приветствуется.

это мой код:

    public function index(Request $request)
    {
        $client = new \GuzzleHttp\Client();

        $perPage = $request->query('per_page') ? : 8;
        $page = $request->query('page') ? : 1;

        $url = "http://localhost/api/culinary?page=$page&per_page=$perPage";

        $response = $client->request('GET', $url);

        $json = json_decode((string)$response->getBody(), true);

        $paginatedResult = new LengthAwarePaginator(
            $json, // the data to be paginated
            count($json), // total count of the data
            $perPage, // number of data shown per page
            $page, // current page number
        );

        $view_data = [
            'title' => 'Browse Culinary',
            'data' => $paginatedResult,
        ];
        return view('culinary.index', $view_data);
    }

и я использую этот код в index.blade.php, чтобы показать часть нумерации страниц

{{ $data->withQueryString()->withPath('/culinary')->links() }}

если в вашем $data 13 элементов и вы считаете эти же данные общим количеством, вы, конечно, получите только одну страницу

kris gjika 26.04.2024 09:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам следует нарезать элементы, которые вы передаете на пагинатор. Из документации:

При создании экземпляра разбиения на страницы вручную вам следует вручную «нарезать» массив результатов, которые вы передаете на разбиение на страницы.

Итак, передайте это своему пагинатору:

$offset = ($page - 1) * $perPage;

$paginatedResult = new LengthAwarePaginator(
    array_slice($json, $offset, $perPage), // paginated data
    count($json), // total count of the data
    $perPage, // number of data shown per page
    $page, // current page number
);

Другие вопросы по теме