Количество страниц Laravel не соответствует данным после фильтра

#laravel #filter #eloquent

#laravel #Фильтр #красноречивый

Вопрос:

У меня есть список с «предложениями», я показываю это в списке с разбивкой на страницы. Но теперь я хочу применить фильтр для отображения отфильтрованных данных следующим образом:

     $offers = Offer::orderBy('id', 'DESC')
      ->whereIn('offer_status', ['pending','sent','confirmed','voicelog'])
      ->paginate(30);

    $filtered_offers = $offers->getCollection()->filter(function($offer) use ($request) {
        if ($offer->offer_status_confirmed_date amp;amp; $offer->offer_status == 'confirmed') {
            if (Carbon::now()->subhours(4) < Carbon::parse($offer>offer_status_confirmed_date)) {
                return false;
            }
        } else {
            return true;
        }
    });

    $offers->setCollection($filtered_offers);
 

это показывает правильные данные, но нумерация страниц неверна. он показывает, что всего их 83 (но после фильтра это должно быть меньше), и он показывает 1 строку на первой странице, затем 6 строк на второй странице и несколько строк на третьей странице. таким образом, разбивка на страницы основана на данных без фильтра.

Как я могу это исправить?

Комментарии:

1. Сначала вы должны получить dd свой результат и проверить его, а затем применить в своем блейде