php - Laravel 模型 - 计算平均评分
问题描述
我有存储评分分数的表“订单”,并且在该表中我与地点有关系。
我需要从每个地方获取订单评分并计算平均评分。我需要它在模型上,以便我可以抓住它以备后用。
这是方案:
[订单]
--order_id = 10
--place_id = 2
--评分= 3
[地点]
--place_id = 2
因此,当我调用:$place->avgRating() 时,它需要例如返回 4.3。拉取订单信息正在工作。这是代码:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Place extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
public function orders(){
return $this->hasMany('App\Order');
}
}
解决方案
你有没有看过文档中的收集方法。
Place
所以在你的模型中添加一个方法:
public function avgRating()
{
return $this->orders->avg('rating');
}
调用$project->avgRating();
应该返回你所期望的。