hasMany(Result::class); } public function benchmarks() { return $this->belongsToMany(Benchmark::class); } public function component() { return $this->belongsTo(Component::class); } public function benchmarkResults() { $data = []; foreach ($this->benchmarks as $i => $b) { $benchmarkResults = $this->results()->where('benchmark_id', $b->id)->get(); if (count($benchmarkResults) > 0) { $averageResults = []; $minimumResults = []; $maximumResults = []; foreach ($benchmarkResults as $r) { array_push($averageResults, $r->average); array_push($minimumResults, $r->minimum); array_push($maximumResults, $r->maximum); } $data[$i] = [ 'name' => $b->name, 'scoring' => $b->scoring, 'count' => count($benchmarkResults), 'average' => (array_sum($averageResults) / count($averageResults)), 'minimum' => (array_sum($minimumResults) / count($minimumResults) ? 1), 'maximum' => (array_sum($maximumResults) / count($maximumResults)), ]; } else { $data[$i] = [ 'name' => $b->name, 'scoring' => $b->scoring, 'count' => count($benchmarkResults), 'average' => 0, 'minimum' => 0, 'maximum' => 0, ]; } } return $data; } }