我实现了一个查看rateable laravel包的评级系统,它正常工作。我有每个产品的平均评级,但除了它想添加的用户数量,评级该产品。例如由5个用户评价的4.5的平均评价。
这个包下面有userSumRating,它输出用户评分的总和,但这与我正在寻找的不同
public function userSumRating()
{
return $this->ratings()->where('user_id', \Auth::id())->sum('rating');
}我已经尝试了几种方法,但都还没有奏效。
发布于 2019-07-28 22:28:08
很好,让它工作了。首先使用户只能对后续评分进行一次评分,然后
$this['count'] = Advert::with(
[
'ratings' => function ($query) {
$query->count('rating');
}
])
->where('slug', $slug)
->groupBy('user_id')
->first();然后在小树枝上
{{ count.ratings|length }}发布于 2019-07-28 21:38:48
在查看了您在问题中提到的软件包后,ratings()会给出与产品相关的所有评级,因此您可以像这样计算这些评级:
$product->ratings()->count();我不确定,但这可能会起作用。我假设用户只对特定产品进行一次评分。
发布于 2019-07-28 22:14:04
我将使用group by和count from SQl术语。这是一个粗略的想法,虽然不够成熟,但我认为这应该可以解决这个问题。Group by将具有相同用户的所有行压缩为一行,然后我们只计算后面有多少行。
public function usersRated()
{
return $this->ratings()->groupBy('user_id')->count('user_id');
}https://stackoverflow.com/questions/57241374
复制相似问题