0

我有模特帖子:

 protected $guarded = [];

 public function reviews() {
      return $this->hasMany(Review::class);
 }

我的评论表有一个列类型,其值为:1(好)、2(评论)、3(否定)。我需要获得每种类型的计数评论。我需要全局获取这些计数。我知道我可以在模型中做这样的事情:

 protected $withCount = ['reviews'];

但这让我得到了所有的评论。但我只需要对每种类型进行计数。

4

2 回答 2

0

您可以使用 GroupBy 方法。

像这样的东西:

DB::table('reviews')
             ->select('type', DB::raw('count(*) as total'))
             ->groupBy('type')
             ->get();
于 2019-04-17T19:37:42.390 回答
0

您可以使用该withCount方法并在内部进行子查询:

$counts = Post::withCount([
'reviews',
'reviews as good_reviews' => function ($query) {
    $query->where('type', 1);
}],
'reviews as bad_reviews' => function ($query) {
    $query->where('type', 3);
}],

}])->get();

您可以像这样访问计数:

echo $counts[0]->good_reviews;

欲了解更多信息:文档

于 2019-04-17T19:41:44.693 回答