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

时间:2019-12-29 06:06:29

标签: php laravel

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

  

import matplotlib.pyplot as plt title = [1,2,3,4] ititle = iter(title) fig, ax = plt.subplots(2, 2, figsize=(6, 8)) flat_ax = ax.flatten() for ax in flat_ax: ax.set_title(f'Title-{next(ititle)}')

The average rating =5

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

--------
place_ratings
---------------
user_id   place_id rating
   1          1      4
   2          1      3
   5          1      5

3 个答案:

答案 0 :(得分:2)

请不要将所有place_ratings条记录都删除掉,如果有成千上万的用户对餐厅进行评分,则会降低您的API速度。

尝试使用此查询:

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

答案 1 :(得分:0)

这就是我的想法。我将其保留为一个集合,以利用集合方法:

public function placeRating($id)
{
    $ratings = PlaceRating::where('place_id',$id)->get();
    $ratingValues = [];

    foreach ($rating as $aRating) {
        $ratingValues[] = $aRating->rating;
    }

    $ratingAverage = collect($ratingValues)->sum() / $ratings->count();

    return $ratingAverage;
}

答案 2 :(得分:0)

尝试一下。

使用$result = $sum/count($rateArray);

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/count($rateArray);

            return response()->json(['rating'=>$result],200);
    }
相关问题