У меня есть новостной сайт с обзором постов на главной странице.Простая коллекция Eloquent с нумерацией страниц, ничего особенного, если честно (model = Post).Теперь добавлена новая модель (видео), которую следует добавить к обзору постов на главной странице.
Таким образом, цель состоит в том, чтобы получить красноречивую коллекцию постов и красноречивую коллекцию видео(которые не связаны друг с другом), затем объедините их в одну коллекцию и разбейте на страницы.
Я осмотрелся и попробовал несколько вещей, но ни одна из них, похоже, не работает.В большинстве случаев они говорят, что используют $collection->merge($otherCollection)
, но это не работает, так как видео с идентификатором 1 не будет отображаться, если есть сообщение с таким же идентификатором, что и будет.
AnДругим вариантом было определить отношения, но поскольку они вообще не связаны, это тоже не сработает.
То, что у меня есть на данный момент, просто чтобы получить сообщения:
if ($highlighted) {
$posts = Post::where([
['status_id', '=', 4],
['published_at', '<=', Carbon::now()],
['id', '!=', $highlighted->id],
])->latest('published_at')->paginate(14);
} else {
$posts = Post::where([
['status_id', '=', 4],
['published_at', '<=', Carbon::now()]
])->latest('published_at')->paginate(15);
}
Теперь я хочу получить видео аналогичным образом
$videos = Video::where([
['status_id', '=', 4],
['published_at', '<=', Carbon::now()]
])->latest('published_at')->paginate(15);
, а затем объединить их в одну коллекцию Eloquent и разбить на страницы итоги вместо видео и записей отдельно
Что-то вроде:$collected = $videos + $posts
, а затем ->latest('published_at')->paginate(15)
(я не добавил ни одного примера того, что я пробовал ради длины этого поста, и, поскольку я чувствую, что это не тот путь, используя ->merge()
. Также мне нужна красноречивая коллекция, использование чистых запросов к БД не работает, если только это не может быть преобразовано в коллекцию Eloquent)
Может быть, это невозможно при использовании красноречивой коллекции, и я должен использоватьпостроитель запросов?
Любая обратная связь / помощь очень ценится.(Не стесняйтесь спрашивать дополнительный код / информацию)