Laravel Eloquent: 获取任务完成百分比

Laravel Eloquent: Get percentage completed from tasks

我有一个任务 table,其中包括项目 ID 和已完成的进度 (0-100)

id project_id progress
1 1 20
2 3 45
3 1 35
4 3 100

我要找的结果是:
项目 1 = 27.5%
项目 3 = 72.5%

我获取任务的代码如下
$project->tasks()

试试这个查询

     DB::table('table_name')->selectRaw('id, project_id, sum(progress) / 
     count(progress) as percentage')->groupBy('project_id')
     ->get();

您可以执行如下操作。惯例说这种关系将被称为 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();