订购多个雄辩的模型

时间:2017-02-16 08:34:28

标签: php arrays laravel collections

我有3个表,类别,rss和rss项目。类别下有rsses列表,每个rs都有自己的feed。我想要实现的是通过发布每个Feed项的日期来命令它们。

要清楚,例如:

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

每个Feed项都有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.

现在,我想获取由pub_date排序的feedItems。我尝试使用forloop:

$rssItems = [];

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

这为我提供了每个RSS Feed项的数组,以自己的RSS Feed排序,而不是批量列表。

相反,我希望获得1个数组或对象,所有Feed项在该数组中联合,并由pub_date排序。我的方法为每个rss feed提供了一系列数组,每个feed项都按自己排序,而不是全局排序。

1 个答案:

答案 0 :(得分:1)

你能做的是,

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

这将返回所有rsses的数组

然后开火,

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

这应该可以为您提供批量数据。

试一试,它应该有用。

相关问题