我正在构建一个具有以下层次结构的工具:
客户 > 项目 > 阶段
每个阶段都有一个“价格”值。该项目有一个“价值”属性,它只是其各个阶段的动态总和。
现在,我还希望客户有一个“价值”字段,并且我希望它是客户所有项目阶段的总和。
除了循环遍历每个项目并将值添加到一起之外,是否有更好的方法来实现此目的?我觉得有一种更好的“Laravel 方式”可以做到这一点。
class Client extends Model
{
public function projects()
{
return $this->hasMany(Project::class);
}
public function getValueAttribute()
{
return $this->projects->sum('totalStagesPrice');
}
}
// Project Model
class Project extends Model
{
public function client()
{
return $this->belongsTo(Client::class);
}
public function stages()
{
return $this->hasMany(Stage::class);
}
public function getTotalStagesPriceAttribute()
{
return $this->stages->sum('price');
}
}