我需要使用两个不同的集合进行分页。有优先上市。放在优先级列表中的钱。
为什么不进行单一查询,可以说优先级列表。原因,使用过滤时;我选择的城市,县,类别。但是,网站所有者,优先列在城市,县,甚至是您想要的类别中列出的优先区域之一。
因此,在使用3个条件的查询关键字中,第一个条件中的其他条件就足够了。每个页面列出20条记录,如果30个第一个列表的主要列表,另一个我想在其后列出的第二个记录集合。
根据现在的标准,我现在分享我的代码。等待你的建议。先感谢您。
抱歉我的英语不好。
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);
答案 0 :(得分:3)
我使用array_merge
进行了2次查询。并为分页器过滤了记录。 Ty阅读我的问题。我希望能帮助别人
$new_collection = array_merge($Priority, $Ads);
$new_collection_count = count($new_collection);
$perPage = 20;
$currentPage = Input::get('page', 1) - 1;
$new_collection = array_slice($new_collection, $currentPage * $perPage, $perPage);
$Ads = Paginator::make($new_collection, $new_collection_count, $perPage);