Я борюсь с довольно сложной вещью и надеюсь, что вы мне поможете.Прямо сейчас у меня есть следующее:
$ads = Ad::where('status', 1)
->whereIn('ad_type', [1, 2, 3])
->where('expire_at', '>', date('Y-m-d H:i:s'))
->where('special_ad', 'standard_ad')
->orderByRaw(DB::raw("FIELD(ad_type,2,3,1)"));
Информация : это работает, потому что это Eloquent Collection, и я могу разбить на страницы это (необходимо для моего Infinite Scroll)
Но теперь я хочу перемешать сами по себе ad_types , что означает: ad_type 1 может иметь, скажем, 30 записей.Все они будут возвращены в обычном порядке.Я хочу перетасовать эти 30 каждый раз, когда я запускаю этот запрос.Я думал о выполнении -> toArray ();но опять же, нет нумерации страниц (нумерация страниц работает только на Eloquent Queries, верно?)
Тогда я подумал: эй, давайте объединим это.Но как только я это сделал, возвращаемая коллекция уже не является Eloquent Collection, а является коллекцией поддержки (верно? Я не уверен на 100%, что это коллекция поддержки), поэтому разбиение на страницы больше не работает.
Я прочитал много постов о том, как решить эту проблему, и выяснил, что одним из решений может быть «создание собственного экземпляра paginator». Но, черт возьми, я еще не так хорош.Я действительно не знаю, даже после изучения документации по laravel, как создать свой собственный paginator.
Важная информация, которая может вам понадобиться: Использование Laravel 5.2 $ads
является динамическим, то есть зависит отВ этом случае запросы, отправленные с помощью Ajax, могут отличаться на более позднем этапе (что-то может быть включено).
Большое спасибо за ваше время, прочитав это, и, надеюсь, вы можете помочь мне и будущим читателямрешение этой конкретной проблемы.
Приветствую вас и хороших выходных всем вам.