gpt4 book ai didi

php - Laravel - 计算多个时间条目的总时间

转载 作者:行者123 更新时间:2023-11-29 15:34:02 34 4
gpt4 key购买 nike

我正在记录用户时间条目。我的时间迁移看起来像:

  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');

});
}

注意:持续时间计算 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 个 10 月份的时间条目。

比方说,时间条目 1 持续时间 = 12:00:00,时间条目 2 持续时间 = 05:00:00

我希望显示总持续时间:17:00:00。我怎样才能做到这一点?

最佳答案

我更正并检查了我之前的答案。

$monthDurations = $user->times()
->whereYear('start_day', 2019)
->select(
\DB::raw('TIME_FORMAT(SUM(TIME_TO_SEC(duration)), "%H:%i:%s") as `month_duration`'),
\DB::raw('DATE_FORMAT(start_day, "%Y-%m") as `year_month`'),
'category',
'user_id'
)
->groupBy(\DB::raw('DATE_FORMAT(start_day, "%Y-%m")'), 'category', 'user_id')
->get();

关于php - Laravel - 计算多个时间条目的总时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58435072/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com