如何计算每个用户的平均值?

时间:2016-10-07 09:06:53

标签: laravel laravel-5 laravel-5.3

我有两张桌子:users, comments

每个用户都有一些评论。

我的请求如下:

$users = User:with('comments')->get();

如何计算字段comments.rate where users.id = comments.user_id

中的平均值

结果我应该收集所有行的用户信息和字段avg_rate

我尝试使用->avg(),但它只返回一行,而不是每行

我有自己的解决方案,但我希望在模型中移动此代码:

{{$users->reviewsAverage()->first()->avg("rate")}}

型号:

public function reviewsAverage()
    {
        return $this->hasMany('App\Review', 'user_id', 'id'); //->first()->avg('rate');
    }

1 个答案:

答案 0 :(得分:0)

有两个函数用于关系,另一个函数用于平均函数

public function comments()
{
    return $this->hasManyThrough('App\Comment', 'id');
}

public function averageRating()
{
    return $this->comments()->selectRaw('avg(rate) as average_rate, comment_id')
                            ->groupBy('comment_id');
}

然后继续这样查询

foreach($users as $user){
    $rate = $user->averageRate();
}