Я регистрирую записи времени пользователя. Моя миграция времени выглядит следующим образом:
Schema::create('times', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->date('start_day');
$table->text('category');
$table->time('start_time');
$table->time('finish_time');
$table->time('duration');
$table->text('notes');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
});
}
Примечание: Duration вычисляет общую разницу между start_time и finish_time
Я группирую месяцы и категории вместе со следующим кодом:
$data = $user->times()->whereYear('start_day', 2019)->get();
$group_months = $data->groupBy(function($entry) {
return $entry->category;
})->map(function($items) {
return $items->groupBy(function($entry) {
return Carbon::parse($entry->start_day)->format('m');
})
->map(function($items) {
return $items->count();
});
});
Если я запускаю dd ($ group_months), я получаю это:
Collection {#322 ▼
#items: array:1 [▼
"Comp Time Used" => Collection {#318 ▼
#items: array:1 [▼
10 => 2
]
}
]
}
Так что, как вы можете видеть, он группирует его по категории и месяцу и подсчитывает общее числозаписей.
Теперь я хочу получить общую продолжительность каждого месяца и соответствующую ему категорию.
Например, если мы ссылаемся на коллекцию выше, у меня есть: 2 ВремяЗаписи за октябрь в поле «Используемое время».
Допустим, длительность ввода времени 1 = 12:00:00 и продолжительность ввода времени 2 = 05: 00: 00
Я хочуОбщая продолжительность отображения: 17:00:00. Как я могу это сделать?