2017-02-16 34 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