我有一个任务表,其中包含项目 ID 和已完成的进度 (0-100)
id | project_id | 进展 |
---|---|---|
1 | 1 | 20 |
2 | 3 | 45 |
3 | 1 | 35 |
4 | 3 | 100 |
我要找的结果是:
项目 1 = 27.5%
项目 3 = 72.5%
我获取任务的代码如下
$project->tasks()
答案 0 :(得分:2)
您可以执行以下操作。约定表示这种关系将被称为 tasks
:
public function tasks()
{
return $this->hasMany(Task::class);
}
public function progress()
{
return $this->tasks()->average('progress');
}
然后就可以得到每个项目的任务进度了:
Project::find(1)->progress();
// or
$project = Project::find(1);
$project->progress();
答案 1 :(得分:1)
试试这个查询
DB::table('table_name')->selectRaw('id, project_id, sum(progress) /
count(progress) as percentage')->groupBy('project_id')
->get();