首页 > 解决方案 > 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');
    }



}

标签: phplaravelrating

解决方案


你有没有看过文档中的收集方法。

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

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

调用$project->avgRating();应该返回你所期望的。


推荐阅读