Merhabalar,
2 farklı collection ile sayfalama yapmam gerekiyor. Mesela sahibinden.com u düşünelim. Öncelikli listeleme var. Parayı veren öncelikli listelemede yer alıyor.
Neden tek bir sorguda öncelikli listeleme yapmıyorsun diyebilirsiniz. Nedeni, süzgeçleme kullanırken; şehir, ilçe, kategori seçtiriyorum. Fakat site sahibi, öncelikli listelemeye sahip olanlarda şehir, ilçe veya kategorisi alanlarından birisi dahi olsa öncelikli listelensin istiyor.
Yani bir sorguda 3 kriteri aratırken, diğerinde 1 kriter yeterli olacak. Her sayfada 20 kayıt listeletsek, öncelikli listelemede 30 adet kaydımın ilk, diğer 2. collectiondaki kayıtların bundan sonra listelenmesini istiyorum.
Sizinle şuan normal kriterlere göre çektiğim kodu paylaşıyorum. Önerilerinizi bekliyorum. Şimdiden teşekkürler.
DB::table('UserAds')
->join('Ads', 'Ads.id', '=', 'UserAds.ad_id')
->join('Users', 'Users.id', '=', 'UserAds.user_id')
->join('AdCategory', 'AdCategory.ad_id', '=', 'Ads.id')
->join('AdEducationPrices', 'AdEducationPrices.ad_id', '=', 'Ads.id')
->join('City', 'City.id', '=', 'Ads.city_id')
->join('Town', 'Town.id', '=', 'Ads.town_id')
->leftJoin('AdMedias', 'AdMedias.ad_id', '=', 'Ads.id')
->select('Ads.*', 'AdEducationPrices.*', 'City.name as city_name', 'City.id as city_id',
'Town.name as town_name', 'Town.id as town_id', 'AdMedias.url')
->where('Ads.is_publish', 1)
->whereIn('AdCategory.category_id', $new_category_array)
->where('Ads.city_id', $city_id)
->where('Ads.town_id', $town_id)
->where('UserAds.is_purchased', true)
->where('UserAds.started_at', '<', date('Y-m-d H:i:s'))
->where('UserAds.finished_at', '>=', date('Y-m-d H:i:s'))
->where('AdMedias.type', 'picture')
->groupby('UserAds.ad_id')->orderby('finished_at', 'DESC')
->orderby('started_at', 'DESC')->paginate(20);