我正在尝试获取一家餐厅的总星级的平均评分。顾客会对这家餐厅进行评价。我制作了一个数据透视表来存储客户评级。
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)
不要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)
| 归档时间: |
|
| 查看次数: |
3954 次 |
| 最近记录: |