Php Laravel 5.7不同帖子的评论数

Php Laravel 5.7不同帖子的评论数,php,laravel,Php,Laravel,当我得到帖子的评论数时,我被绊住了,但它显示了每个帖子上所有帖子的所有评论数。我想知道如何输出在刀片评论后ID计数 这是控制器: $posts = $posts->orderBy("posted_at", "desc") ->paginate(config("blogetc.per_page", 10)); $comments = BlogEtcComment::all(); return view("blogetc::index", [

当我得到帖子的评论数时,我被绊住了,但它显示了每个帖子上所有帖子的所有评论数。我想知道如何输出在刀片评论后ID计数

这是控制器:

  $posts = $posts->orderBy("posted_at", "desc")
        ->paginate(config("blogetc.per_page", 10));

    $comments = BlogEtcComment::all();


    return view("blogetc::index", [
        'posts' => $posts,
        'title' => $title,
        'comments' => $comments,
    ]);
刀片:

@foreach($posts as $post)
<section class="blog_area p_120">
        <div class="container">
            <div class="row">
                <div class="col-lg-8">
                    <div class="blog_left_sidebar">
                        <article class="blog_style1">
                            <div class="blog_img">
                                <img class="img-fluid" src="blog_images/{{$post->image_large}}" alt="">
                            </div>
                            <div class="blog_text">
                                <div class="blog_text_inner">
                                    <div class="cat">
                                        <a class="cat_btn" href="{{$post->url()}}">{{$post->slug}}</a>
                                        <a href="#"><i class="fa fa-calendar" aria-hidden="true"></i>{{$post->created_at}}</a>
                                        <a href="{{$post->url()}}"><i class="fa fa-comments-o" aria-hidden="true"></i> {{count($comments)}}</a>
                                    </div>
                                    <a href="{{$post->url()}}"><h4>{{$post->title}}</h4></a>
                                    <p>{!! $post->generate_introduction(400) !!}</p>
                                    <a class="blog_btn" href="{{$post->url()}}">Lasīt vairāk</a>
                                </div>
                            </div>
                        </article>
                    </div>
                </div>
            </div>
        </div>
</section>
@endforeach
@foreach($posts as$post)
{!!$post->生成介绍(400)

@endforeach
您可以使用获取特定帖子的评论数:

$posts = $posts->withCount('comments')
        ->orderBy("posted_at", "desc")
        ->paginate(config("blogetc.per_page", 10));
以上要求您在您的
帖子
模型上有
评论
关系:

public function comments()
{
    return $this->hasMany(BlogEtcComment::class);
}
Post
型号:

public function comments()
{
    return $this->hasMany(BlogEtcComment::class);
}
BlogEtcComment
型号:

public function post()
{
    return $this->belongsTo(Post::class);
}
然后在blade中:

@foreach($posts as $post)
  <p>Post : $post->id</p>
  <p>Comments : $post->comments_count</p>
@endforeach
@foreach($posts as$post)
Post:$Post->id

评论:$post->Comments\u count

@endforeach
//快速修复:

//假设您的posts表名为posts,并且在blogetccomments表中//有一个post_id列指向原始post。试试像这样的东西

$posts = DB::table('posts')
    ->leftJoin('blogetccomments', 'posts.id', '=', 'blogetccomments.post_id')
    ->selectRaw('posts.*, count(blogetccomments.post_id) as commentcount')
    ->groupBy('posts.id')
    ->get();
在blade模板中,访问每个帖子的评论数,如下所示

@foreach($posts as $post)
...
{{$post->title}}...
{{$post->commentcount}}

...
@endforeach

你需要使用
groupBy
子句。我找到了另一种方法,但不知道这是一种好的做法。我把我的刀锋-“{count($comments)}}”改为“{count($post->comments)}”,它对机械化刀锋没有帮助,因为你仍然这样做
{count($comments)}
$comments=BlogEtcComment::all()将始终包含所有帖子的所有记录。你能展示一下模型吗?