我试图从所有帖子中提取所有未经批准的评论。我收到所有帖子,循环播放并收到他们的评论。这给我留下了一个嵌套的集合/数组。我不确定如何循环嵌套级别以提取所有注释。我到目前为止所尝试的是:
CommentsController:
$posts = Post::all();
$unapprovedcomments = collect([]);
foreach($posts as $post){
$unapprovedcomments->push($post->comments()->get());
}
dd($unapprovedcomments);
return view('commentqueue')->with('unapprovedcomments',$unapprovedcomments);
commentqueue.blade.php:
@foreach($unapprovedcomments->map->Comment as $unapprovedcomment)
<p>{{$unapprovedcomment->comment}}</p>
@endforeach
$ unapprovedcomments的dd输出如下所示:(裁剪)
我目前收到的错误是:
Property [Comment] does not exist on this collection instance
如果我没有遍历所有帖子而只是从一个帖子中提取评论,我可以使用以下方式获取评论:
@foreach($unapprovecomments as $unapprovedcomment)
{{$unapprovedcomment->comment}}
@endforeach
如何提取所有评论?有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
试试这个:
$posts = Post::all();
$unapprovedcomments = $posts->pluck('comments')->collapse();
为了获得更好的性能,您应该使用eager loading:
$posts = Post::all()->load('comments');