如何获得应计用户总数?

时间:2019-07-28 13:31:01

标签: php laravel

我实施了一个针对rateable laravel软件包的评级系统,该系统可以正常运行。我对每种产品均进行了平均评分,但除了此以外,还希望添加对该产品进行评分的用户数。例如,平均评分为4.5,由5个用户评分。

该程序包的userSumRating低于该值,它输出用户评分的总和,但与我要查找的内容不一样

 public function userSumRating()
    {
        return $this->ratings()->where('user_id', \Auth::id())->sum('rating');
    }

我尝试了几件事,但是还没有成功。

3 个答案:

答案 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 }}