【发布时间】:2020-02-14 12:27:55
【问题描述】:
我正在记录用户时间条目。我的时间迁移看起来像:
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
]
}
]
}
如您所见,它按类别和月份对其进行分组,并计算条目总数。
我现在想获取每个月的总时长及其对应的类别。
例如,如果我们引用上面的集合,我有: Comp Time Used 下 2 个 10 月份的时间条目。
比方说,时间条目 1 持续时间 = 12:00:00,时间条目 2 持续时间 = 05:00:00
我希望显示总时长:17:00:00。我该怎么做?
【问题讨论】:
-
我回答了你的其他问题。你看到我的回答了吗?stackoverflow.com/a/58435270/9396711
-
我没看到,我的错。我会把它放在我的 Time.php 模型中吗?
-
尝试在您的控制器中调用此代码。
-
给我一个 SQL 语法/版本错误
标签: php mysql laravel collections eloquent