调用 float LARAVEL 上的成员函数 addEagerConstraints()

use*_*472 2 php mysql laravel eloquent laravel-5

我的目标是获得对可用课程的平均评价。但是当我试图获得课程的平均评价时,它给了我一个错误:"message": "Call to a member function addEagerConstraints() on float"

我的课程模型

 public function rating(){
    return $this->hasMany(Rating::class);
}
public function averageRating(){
    return round($this->rating()->avg('ratings'),1);
}
Run Code Online (Sandbox Code Playgroud)

评级模型

 public function user(){
        return $this->belongsTo(User::class);
    }
    public function course(){
        return $this->belongsTo(Course::class);
    }
Run Code Online (Sandbox Code Playgroud)

我的控制器

$result = Course::with('averageRating')->get();
Run Code Online (Sandbox Code Playgroud)

我希望它能提供课程详细信息以及每门课程的平均评分,但它抛出了错误。谁能帮帮我吗??谢谢

ram*_*esh 8

AverageRating 方法不是关系,您不能像关系那样使用它。如果您想要平均评级,请将averageRating 设置为附加属性。

课程.php:

protected $appends = [
    'average-rating'
];

function getAverageRatingAttribute(){
    return round($this->rating()->avg('ratings'),1);
}
Run Code Online (Sandbox Code Playgroud)