如何获取特定用户的一栏的平均值

时间:2019-07-10 13:38:15

标签: laravel

我有一个表,其中存储了不同用户的清洁分数。现在,我正在尝试计算所有用户的清洁得分的平均值 例如我有两个用户 1. Roommie 1 2. Roommie 2 我想计算每个用户的清洁得分的平均得分

这是我存储每个用户分数的方式

<?php
     public function store(Request $request)
     {
        $email = User::where('id',$request->user_id)->value('email');
        $score = CleaningScore::create([
           'score'=>$request->score,
           'user_id'=>$request->user_id,
           'giver_id'=>\Auth::user()->id
        ]);
        // \Mail::to($email)->send(new ScoreNotification($score));
           return redirect()->to('/scores/list_of_rommies/index')- 
           >with('success','Scores are successfully Assign to The 
             Rommie');
       }
 ?>

现在我要计算每位员工的平均得分 我怎么得到那个???

我尝试这样做

$scores = Score::all();
foreach($scores as $score)
{
    $cleaning = $score->score;
    $average = $cleaning->avg();
}

像这样但失败了

2 个答案:

答案 0 :(得分:0)

这是您从模型中获得平均值的方式

$scoresAvg = YourModel::avg('ColumnName');

希望有帮助

答案 1 :(得分:0)

尝试对用户进行分组并获得组的平均值:

代码如下:

$data = DB::table('cleaning_scores')
    ->select(DB::raw('avg(score) as avg, user_id'))
    ->groupBy('user_id')
    ->orderByDesc('avg')
    ->get();