Laravel 模型 - 计算平均评分

Laravel Model - Calculate avg ratings

我有 table "Orders" 存储评分的地方,在里面 table 我与地方有关系。

我需要从每个地方抓取订单评分并计算平均评分。我需要它在模型上,所以我可以抓住它以备后用。

这是方案:

[订单]

--order_id = 10

--place_id = 2

--评分=3

[地点]

--place_id = 2

所以,当我调用:$place->avgRating() 时,它需要 return 例如 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');
    }



}

你看过documentation中的收集方法了吗?

所以在你的 Place 模型中添加一个方法:

public function avgRating()
{
    return $this->orders->avg('rating');
}

调用 $project->avgRating(); 应该 return 如您所愿。