Laravel:如何获取总帖子的评论总数

问题描述 投票:0回答:5

我有10000个帖子,每个帖子都有很多评论。我发帖时需要计算所有评论数。

[
    'post_1' => [
        'comments' => [
            'comment_1' => 'trst comment',
            'comment_2' => 'trst comment',
            'comment_3' => 'trst comment',
        ],
    ],
    'post_2' => [
        'comments' => [
            'comment_1' => 'trst comment',
            'comment_2' => 'trst comment',
            'comment_3' => 'trst comment',
        ],
    ],
    'post_3' => [
        'comments' => [
            'comment_1' => 'trst comment',
            'comment_2' => 'trst comment',
            'comment_3' => 'trst comment',
        ],
    ],
]

共有9条评论。我想要得到这个计数。

在 Laravel 中可以获取一行的 hasMany 关系的计数

Post::first()->comments()-count()

我需要这样的:

Post::get()->comments()-count()

我不想使用 foreach 因为我的服务器可能会宕机。

php laravel laravel-5 relational-database laravel-5.7
5个回答
3
投票

您至少可以通过两种方式做到这一点。

$posts = Post::withCount('comments')->get();
$total = $posts->sum('comments_count');
  • 直接从
    Comment
    模型计数(在您的情况下,我将采用这种方法):
$total = Comment::count();

1
投票

也许你必须走不同的路:

Comment::whereNotNull('post_id')->count();

1
投票
Post::withcount('comment')->where('post_id', $post_id)->get();

试试这个。


1
投票
$posts = Post::withCount('comments')->get();
$total = $posts->sum('comments_count');

$total = Comment::all()->count();

-3
投票

测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试

© www.soinside.com 2019 - 2024. All rights reserved.