2014-07-06 72 views
1

我需要做兩個不同的集合分頁。有優先上市。放在優先列表中的資金。Laravel合併2集合與paginator

爲什麼你不做單個查詢,你可以說優先級列表。原因,當使用過濾;城市,縣,我選擇的類別。但是,網站所有者需要在城市,縣,甚至是您想要的類別中列出的優先領域中優先列出。

因此,在使用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); 

回答

2

我用array_merge進行了2個查詢。併爲paginator過濾記錄。 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);