2017-02-16 58 views
1

我有3個表,類別,rss和rss項目。類別下面有rss列表,每個rss都有自己的提要。我試圖通過發佈每個Feed項目的日期來訂購它們。訂購多個雄辯模型

要明確,例如:

Category: dogs > 3x RSS assigned to dogs category > each RSS has 30 feed items. 

而且每進一個項目都有它PUB_DATE。


我想要做的是使用類別id,獲取所有的feed項目並按pub_date對它們進行排序。

我的嘗試:

$categoryId = Category::where('name', $category)->first()->id; 
$rsses = RSS::where('category_id', $categoryId)->get(); 

// rsses is now a collection of each RSS arrays. 

現在,我想要得到的feedItems,通過PUB_DATE訂購。我試圖用一個for循環:

$rssItems = []; 

foreach ($rsses as $rss) { 
    array_push($rssItems, RssFeed::where('rss_id', $rss->id)->orderBy('pub_date', 'asc')->get()); 
} 

這給了我各RSS源項目的數組,在自己的RSS提要有序,而不是散列表。

取而代之,我想獲得1個數組或對象,並且所有供給項目都在該數組中進行了組合,並且由pub_date進行排序。我的方法爲每個rss提要帶來了一個數組數組,每個提要項目都是按自己排序而不是全局排序的。

回答

1

你可以做的是,

$rsses = RSS::where('category_id', $categoryId)->pluck('id'); 

這將返回大家rsses

再火陣列,

RssFeed::whereIn('rss_id', $rsses)->orderBy('pub_date', 'asc')->get(); 

這應該給你大量的數據。

試一試,它應該工作。

+0

非常感謝!像魅力一樣工作! – senty