我实施了一个针对rateable laravel软件包的评级系统,该系统可以正常运行。我对每种产品均进行了平均评分,但除了此以外,还希望添加对该产品进行评分的用户数。例如,平均评分为4.5,由5个用户评分。
该程序包的userSumRating低于该值,它输出用户评分的总和,但与我要查找的内容不一样
public function userSumRating()
{
return $this->ratings()->where('user_id', \Auth::id())->sum('rating');
}
我尝试了几件事,但是还没有成功。
答案 0 :(得分:1)
我将利用SQ1术语进行分组和计数。这是一个粗略的主意,没有解决,但我认为这应该解决。将同一用户的所有行分组为一组,然后我们只计算之后的行数。
public function usersRated()
{
return $this->ratings()->groupBy('user_id')->count('user_id');
}
答案 1 :(得分:0)
在查看了您在问题中提到的包装后,ratings()
给出了与该产品相关的所有评分,因此您可以像这样计算这些评分:
$product->ratings()->count();
我不确定,但这可能有用。我假设用户只对特定产品评分一次。
答案 2 :(得分:0)
很好。首先使用户只能对一次评分,而随后的评分作为更新,然后
$this['count'] = Advert::with(
[
'ratings' => function ($query) {
$query->count('rating');
}
])
->where('slug', $slug)
->groupBy('user_id')
->first();
然后在树枝
{{ count.ratings|length }}