首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rateable中获得总用户数?

如何在rateable中获得总用户数?
EN

Stack Overflow用户
提问于 2019-07-28 21:31:01
回答 3查看 95关注 0票数 0

我实现了一个查看rateable laravel包的评级系统,它正常工作。我有每个产品的平均评级,但除了它想添加的用户数量,评级该产品。例如由5个用户评价的4.5的平均评价。

这个包下面有userSumRating,它输出用户评分的总和,但这与我正在寻找的不同

代码语言:javascript
复制
public function userSumRating()
{
    return $this->ratings()->where('user_id', \Auth::id())->sum('rating');
}

我已经尝试了几种方法,但都还没有奏效。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-28 22:28:08

很好,让它工作了。首先使用户只能对后续评分进行一次评分,然后

代码语言:javascript
复制
$this['count'] = Advert::with(
    [
        'ratings' => function ($query) {
            $query->count('rating');
         }
    ])
    ->where('slug', $slug)
    ->groupBy('user_id')
    ->first();

然后在小树枝上

代码语言:javascript
复制
{{ count.ratings|length }}
票数 1
EN

Stack Overflow用户

发布于 2019-07-28 21:38:48

在查看了您在问题中提到的软件包后,ratings()会给出与产品相关的所有评级,因此您可以像这样计算这些评级:

代码语言:javascript
复制
$product->ratings()->count();

我不确定,但这可能会起作用。我假设用户只对特定产品进行一次评分。

票数 1
EN

Stack Overflow用户

发布于 2019-07-28 22:14:04

我将使用group by和count from SQl术语。这是一个粗略的想法,虽然不够成熟,但我认为这应该可以解决这个问题。Group by将具有相同用户的所有行压缩为一行,然后我们只计算后面有多少行。

代码语言:javascript
复制
public function usersRated()
{
    return $this->ratings()->groupBy('user_id')->count('user_id');
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57241374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档