#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
свой результат и проверить его, а затем применить в своем блейде