【发布时间】:2020-10-27 13:08:12
【问题描述】:
我有以下三个模型:用户、帖子和评论。一个用户可以有多个帖子,每个帖子可以有多个 cmets。
我想做的是:
- 获取属于特定用户的所有帖子中所有 cmets 的计数
- 获取本月属于同一用户的所有帖子中所有 cmets 的计数
- 起点是按 ID 的特定帖子(因此不是从用户 ID 开始)。
请看下面我现在所拥有的,这是可行的。
我的问题是:是否可以将执行 ->sum() 的最后两行添加到查询中?
我认为这个查询已经很漂亮了,但它看起来会更好,但更重要的是,如果最后两行也包括在内,它将使缓存变得容易得多。
$post = Post::findOrFail($id);
$posts = Post::where('user_id', $post->user_id)
->withCount(['comments as comments_total'])
->withCount([
'comments as comments_this_month' => function ($q) {
$q->whereBetween('created_at',
[ Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth() ]
);
},
])->get();
});
$comments_this_month_count = $posts->sum('comments_this_month');
$comments_total_count = $posts->sum('comments_total');
【问题讨论】:
标签: laravel