Laravel 5环境下如何获取某篇帖子的所有评论用户?
获取某篇帖子的所有评论用户(Laravel 5)
嘿,我来帮你解决这个问题!要获取某篇帖子的所有评论用户,咱们可以通过Laravel的关联查询来实现,具体步骤和方法如下:
第一步:完善模型关联
首先,你的PostGroup模型目前还没有和PostComment建立一对多的关联,咱们先补上这个关联,这样能更方便地从帖子直接获取评论:
// PostGroup.php public function comments() { return $this->hasMany('App\PostComment'); }
如果后续需要从用户维度查询他的评论,也可以在User模型里添加评论关联:
// User.php public function comments() { return $this->hasMany('App\PostComment'); }
方法一:从帖子出发,获取评论及关联用户
这种方法适合你需要同时查看评论内容和对应用户信息的场景,还能避免N+1查询问题:
// 先获取目标帖子实例,$postId是你要查询的帖子ID $postGroup = PostGroup::find($postId); // 预加载评论及其关联的用户 $commentsWithUsers = $postGroup->comments()->with('user')->get(); // 提取所有评论用户,用unique('id')去重(如果同一个用户多次评论该帖子) $commentUsers = $commentsWithUsers->pluck('user')->unique('id');
方法二:直接查询评论过该帖子的用户
如果只需要获取用户列表,不需要评论内容,可以用这种更直接的方式:
// $postId是目标帖子的ID $commentUsers = User::whereHas('comments', function ($query) use ($postId) { $query->where('post_group_id', $postId); })->get();
这样就能轻松拿到某篇帖子的所有评论用户啦!
内容的提问来源于stack exchange,提问作者Zoythrus
相关产品推荐
相关产品推荐

