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

时间:2021-01-24 22:42:47

标签: laravel laravel-8

我有一个任务表,其中包含项目 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()

2 个答案:

答案 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();
相关问题