所以,我正在尝试向模型添加属性(评级)。
到目前为止,我做到了这一点:
Undefined index: id
但它会返回dd
奇怪的是,如果我在$this->attributes
上id
,它会显示所有数组属性,包括fitCenter
。
我做错了什么以及如何获取属性值?
答案 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以避免除以零。