#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();