Ich arbeite an einer einfachen Aufgaben-App. Ich möchte gerne die Gesamtzeit für jedes Projekt aufladen. Ich habe zwei Tabellen:Laravel 5.2 Eager Load Relation mit summarischer Berechnung
Table: task_project
id, client_id, name, description
Table: task_entries
id, task_project_id, start_time, end_time
Die Beziehung zwischen Tabellen über task_project.id = task_entries.task_project_id
hergestellt wird.
Für jedes Projekt in der Tabelle task_project
verfolgen wir die Zeit für jede Aufgabe in . Ich habe eine Methode namens elapsed
erstellt, um dies zu behandeln.
Also in meinem Modell TaskProject
Ich habe eine Beziehung für tasks
und für elapsed
:
public function tasks()
{
return $this->hasMany(TaskEntry::class, 'task_project_id');
}
public function elapsed()
{
return $this->hasOne(TaskEntry::class, 'task_project_id')
->selectRaw('time_format(SUM(timediff(task_end_time, task_start_time)), "%H:%m:%s") AS hours')
->groupBy('task_entries.task_project_id');
}
Und dann in meinem Controller Ich nenne es wie folgt:
$tasks = TaskProject::with('elapsed')->paginate(15);
Aber das Verhältnis für elapsed
ist ein Nullwert für jede Projektreihe
Ich mag diesen Wert in Vorlage meiner Klinge in der Lage, am Ende für den Zugriff als hh: mm: ss durch die Verwendung:
$task->elapsed->hours
Jede Hilfe ist willkommen!
Danke @programmerKev! – TheRealPapa