我有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 因为我的服务器可能会宕机。
您至少可以通过两种方式做到这一点。
$posts = Post::withCount('comments')->get();
$total = $posts->sum('comments_count');
Comment
模型计数(在您的情况下,我将采用这种方法):$total = Comment::count();
也许你必须走不同的路:
Comment::whereNotNull('post_id')->count();
Post::withcount('comment')->where('post_id', $post_id)->get();
试试这个。
$posts = Post::withCount('comments')->get();
$total = $posts->sum('comments_count');
或
$total = Comment::all()->count();
测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试