我有模型Post:
protected $guarded = [];
public function reviews() {
return $this->hasMany(Review::class);
}
我的评论表的列类型值为:1(好),2(评论),3(负)。 我需要对每种类型进行计数评论。我需要全局获取这些计数。我知道我可以在模型中做这样的事情:
protected $withCount = ['reviews'];
但这让我获得了所有评论。但是我只需要为每种类型计数。
答案 0 :(得分:0)
您可以使用GroupBy方法。
类似这样的东西:
DB::table('reviews')
->select('type', DB::raw('count(*) as total'))
->groupBy('type')
->get();
答案 1 :(得分: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;
有关更多信息:Docs