Найти страницу пагинации по ID заказа, ошибка?

Добрый вечер, у меня есть страница с пагинацией, по 50 записей на страницу. В сумме, записей больше 2к. Мне в некоторых ситуациях нужно знать на какой странице, какая запись находится. В целом я подумал, что ничего сложного и написал следующий код:

$id = request()->onote;
$per_page = 50;
$total_page = $this->has('removals')
                ->wherehas('removals.product')
                ->where('archived', 0)
                ->paginate($per_page)
                ->lastPage();

            $index = $this->has('removals')
                ->wherehas('removals.product')
                ->where('archived', 0)
                ->where('id', '<=', $id)
                ->count();

            $page = round($index/$per_page);
            $page = ($total_page-$page);


У меня на совершенно другой странице есть информация о конкретных заказах и я хочу по клику перейти на страницу с заказом. Частично скрипт отрабатывает как нужно, вот конкретный пример, у меня есть 2 заказа на странице 4 и 1 заказ на странице 8. Скрипт корректно определяет страницу для заказов с 4 страницы, но для заказа с страницы 8 он говорит, что заказ находится на странице 7, хотя он по факту на странице 8.
Подскажите, где именно я ошибся?
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@Ka4_Piton Автор вопроса
Очень не хотел, но пришлось все сделать с помощью рекурсии, поскольку задачу было нужно решить как можно быстрее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vism
потому что "школьные знания в жизни не пригождаются" класс 6 наверно
Подсказка
$page = round($index/$per_page);
$page = ($total_page-$page);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы