通过嵌套的laravel集合循环

时间:2018-03-21 02:10:04

标签: php laravel

我试图从所有帖子中提取所有未经批准的评论。我收到所有帖子,循环播放并收到他们的评论。这给我留下了一个嵌套的集合/数组。我不确定如何循环嵌套级别以提取所有注释。我到目前为止所尝试的是:

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输出如下所示:(裁剪)

enter image description here

我目前收到的错误是:

Property [Comment] does not exist on this collection instance

如果我没有遍历所有帖子而只是从一个帖子中提取评论,我可以使用以下方式获取评论:

@foreach($unapprovecomments as $unapprovedcomment)
    {{$unapprovedcomment->comment}}
@endforeach

如何提取所有评论?有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

试试这个:

$posts = Post::all();
$unapprovedcomments = $posts->pluck('comments')->collapse();

为了获得更好的性能,您应该使用eager loading

$posts = Post::all()->load('comments');