我有一个Collection
,它包含根类别和所有后代。在我的Category
模型中,我已经确定可以有许多与该类别相关的帖子。我使用以下代码检索类别及其后代:
$category = Category::findOrFail($categoryID);
$categoryAndDescendants = $category->getDescendantsAndSelf();
$categoryAndDescendants
是一个Collection
对象,其中包含Category
个模型。是否可以一次检索所有帖子?
我基本上想做类似的事情:
$posts = $categoryAndDescendants->posts()->orderBy('timestamp', 'DESC');
将检索该特定集合中所有类别及其后代的所有帖子。
感谢您的帮助,我为可怕的措辞道歉。
答案 0 :(得分:0)
我认为这是不可能的。
但您可以编写自定义Collection,并实现此功能。像这样:
<?php
use Illuminate\Support\Collection;
class CategoryCollection extends Collection
{
public function posts()
{
$posts = new Collection();
foreach ($this->items as $category) {
foreach ($category->posts() as $post) {
$posts->add($post);
}
}
return $posts;
}
}
然后,您只需将此自定义集合设置为您的类别模型。
class Category extends Eloquent
{
public function newCollection(array $models = array())
{
return new CategoryCollection($models);
}
}