Заказ нескольких красноречивых моделей

У меня есть 3 таблицы, категории, RSS и RSS предметов. Категория имеет список rsses под ней, и каждый rss имеет свои собственные каналы. Я пытаюсь добиться их упорядочения по дате публикации каждого элемента фида.

Чтобы быть понятным, пример:

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

И каждый элемент канала имеет свою pub_date.


То, что я пытаюсь сделать, это использовать идентификатор категории, получить все элементы фида и упорядочить их по 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. Я попытался использовать forloop:

$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();

Это должно дать вам объемные данные.

Попробуйте, это должно работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector