Как мне отслеживать разбитое на страницы значение в моем контроллере и отображать определенное количество записей на странице?

#php #laravel #debugging #pagination

#php #laravel #отладка #разбивка на страницы

Вопрос:

Я получаю разбитые на страницы значения из запроса, который находится внутри репозитория. Однако в моем контроллере (фрагмент ниже) — я хочу отслеживать текущую страницу с разбивкой на страницы, на которой находится пользователь, и хотел бы отображать записи, если, скажем, пользователь находится на странице 1, затем получить элементы 1-30.

(30 записей будут максимально допустимыми на одной странице с разбиением на страницы или менее 30, если записей недостаточно)

Если пользователь находится на странице 2, тогда получите 31-60 и так далее. Как бы мне настроить логику для этого в моем контроллере? Я перепробовал слишком много вещей, чтобы упомянуть, мне просто нужна еще одна пара глаз.

Вот код контроллера:

 try {

        $inventoryList =  $this->_inventoryRepository->getInventories();

        if($inventoryList['current_page'] <= 0) {
            $inventoryList['current_page'] = 1;
        }

        $inventoryList['per_page'] = 30; // 30 entries per page
        $inventoryList['current_page'] = (int) get_value($inventoryList["current_page"], 1); // the current page, default will be 1
        $totalRecords = $inventoryList['total']; // total number of records 88

        // now I have all records
        // if page is 2 and total records for page is 30, then acquire records from 31-60
        
        return [
            'isValid' => true,
            'list' => $inventoryList,
            'page' => $inventoryList['current_page'],
            'totalRecords' => $totalRecords,
            'pageSize' => $inventoryList['per_page'],
            'message' => 'Successfully fetched inventories list'
        ];
    } catch( Exception $exception) {
        return [
            'isValid' => false,
            'code' => $exception->getCode(),
            'systemMessage' => $exception->getMessage(),
            'message' => "Something went wrong"
        ];
    }
  

Вот запрос с разбивкой на страницы:

 $this->model
  ->distinct()
  ->with('table.rewards')
  ->select($attributes['inventory'])
  ->paginate();