使用型号
客户
id | name | code | ....
项目(一个客户可以有多个项目,一个项目可以有多份报告)id | customer_id | name | code | ....
报告(一个项目可以有多个报告。报告每月更新)id | project_id | amount | year | month | ....
如何根据引用customer_id
计算报表的最新记录的列数之和?我不知道该怎么做。
任何帮助都将不胜感激。我想根据客户id显示每个项目的最新报告(基于报告id的最新报表)中的金额总和。
我有许多粗略的关系。
public function report()
{
return $this->hasManyThrough(
Report::class,
Project::class,
'customer_id',
'project_id',
'id',
'id'
);
}
添加以下内容将解决您的问题:
在User.php
文件中:
public function reports()
{
return $this->hasManyThrough(
Report::class,
Project::class,
'user_id',
'project_id',
'id',
'id'
);
}
public function projects(){
return $this->hasMany(Project::class);
}
public function amount(){
return $this->projects()->get()->sum(function ($project) {
return $project->latestReport()->amount;
});
}
在Project.php
文件中:
public function reports(){
return $this->hasMany(Report::class);
}
public function latestReport(){
return $this->reports()->latest()->first();
}
最后。您可以通过调用来获得每个项目的最新报告的金额总和
User::first()->amount();