Laravel 模型中的 sum

问题描述 投票:0回答:1

我正在构建一个具有以下层次结构的工具:

客户 > 项目 > 阶段

每个阶段都有一个“价格”值。该项目有一个“价值”属性,它只是其各个阶段的动态总和。

现在,我还希望客户有一个“价值”字段,并且我希望它是客户所有项目阶段的总和。

除了循环遍历每个项目并将值添加到一起之外,是否有更好的方法来实现此目的?我觉得有一种更好的“Laravel 方式”可以做到这一点。

php laravel eloquent
1个回答
0
投票
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');
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.