如何计算5星总评分的平均值?

Dev*_*per 3 php laravel

我正在尝试获取一家餐厅的总星级的平均评分。顾客会对这家餐厅进行评价。我制作了一个数据透视表来存储客户评级。

The average rating =5

--------
place_ratings
---------------
user_id   place_id rating
   1          1      4
   2          1      3
   5          1      5
Run Code Online (Sandbox Code Playgroud)

公式是什么或者如何在 php laravel 中计算?
这是我的代码:

public function placeRating($id)
    {

        $rates = PlaceRating::where('place_id',$id)->select('rating')->get()->toArray();

           $rateArray =[];
           foreach ($rates as $rate)
           {
               $rateArray[]= $rate['rating'];
           }

            $sum = array_sum($rateArray);
            $result = $sum/5;

            return response()->json(['rating'=>$result],200);
    }
Run Code Online (Sandbox Code Playgroud)

Tsa*_*oga 5

不要place_ratings取出所有记录,如果有数千个以上的用户对餐厅进行评分,它会减慢您的 API。

尝试使用此查询:

PlaceRating::where('place_id',$id)->selectRaw('SUM(rating)/COUNT(user_id) AS avg_rating')->first()->avg_rating;
Run Code Online (Sandbox Code Playgroud)