Laravel 收集和雄辩的结果

Laravel 收集和雄辩的结果,laravel,collections,eloquent,Laravel,Collections,Eloquent,我有一组从函数返回的行,并存储在名为$topics的变量中。每个主题包含一组文章。所以对于变量$topics,如果我们做$topics[0]->文章,我们会得到几篇文章,如果我们做$topics[1]->文章,我们会得到另一组文章。我想做的是将所有这些文章放在一个变量中,我们称之为$articles,这样我就可以进行如下操作 $articles->where('author','Jone Doe')->get() 我试着这样做: $articles = new collection(); fo

我有一组从函数返回的行,并存储在名为$topics的变量中。每个主题包含一组文章。所以对于变量$topics,如果我们做$topics[0]->文章,我们会得到几篇文章,如果我们做$topics[1]->文章,我们会得到另一组文章。我想做的是将所有这些文章放在一个变量中,我们称之为$articles,这样我就可以进行如下操作 $articles->where('author','Jone Doe')->get()

我试着这样做:

$articles =  new collection();
foreach( $topics as $topic) {
  foreach( $topic->articles as $article)
      $articles->push($article);
但不幸的是,这破坏了文章的实际结构。就像我不能在使用翻译包的地方做$articles->翻译一样。但是我可以做$topics[0]->文章->翻译。基本上,我想把所有的文章都放在一个集合中,就好像它们是从做类似的事情中返回的一样

$articles = Article::all()->get();

谢谢

只需在您的收藏中使用
pull
方法即可

$articles=$topics->pull('articles');
如果你想要一个一维的文章集合

$articles=$topics->flatMap(函数($topic){
返回$topic->articles;
});