Laravel lmutator $ this->属性返回'Undefined index:id'

时间:2015-09-03 16:03:16

标签: php laravel eloquent

所以,我正在尝试向模型添加属性(评级)。

到目前为止,我做到了这一点:

Undefined index: id

但它会返回dd

奇怪的是,如果我在$this->attributesid,它会显示所有数组属性,包括fitCenter

我做错了什么以及如何获取属性值?

2 个答案:

答案 0 :(得分:3)

您可以简化使用内置关系,然后您不必担心手动处理属性。

e.g。

public function reviews()
{
    $this->hasMany('App\Review');
}

public function getRatingAttribute()
{
    return $this->reviews->count() > 0 ? $this->reviews->sum('rating') / $this->reviews->count() : 0;
}

答案 1 :(得分:2)

尝试利用这种关系,只需选择聚合。

public function getRatingAttribute()
{

    return $this->reviews()
        ->selectRaw('AVG(reviews.rating) as aggregate')
        ->pluck('aggregate');

}

更新:更改此项以使用内置AVG以避免除以零。