두 개의 다른 컬렉션으로 페이징해야합니다. 우선 순위 목록을 작성하십시오. 우선 순위 목록에있는 돈.Laravel 병합 자 2로 컬렉션
왜 단일 쿼리를 수행하지 않으시겠습니까? 우선 순위 목록을 말할 수 있습니다. 필터링을 사용하는 이유; 도시, 카운티, 카테고리를 선택합니다. 그러나 사이트 소유자는 도시, 카운티 또는 원하는 카테고리에 나열된 우선 순위 중 하나에 우선 순위 목록이 있습니다.
따라서 3 가지 기준을 사용할 때 검색어 키워드에서 첫 번째 기준에서 다른 기준이 충분합니다. 각 페이지는 30 개의 첫 번째 목록의 기본 목록, 다른 하나의 목록의 두 번째 모음이 그 이후에 나열되기를 원하는 경우 20 개의 레코드를 나열합니다.
기준에 따라 일반적으로 내 코드를 공유합니다. 제안을 기다리는 중입니다. 미리 감사드립니다.
영어 불쾌한 경우 죄송합니다.
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);