php - Laravel - 资源计数月份日期
问题描述
我使用 Laravel eloquent 模型从数据库中获取数据。获取所有具有过去 6 个月历史记录的用户。
数据库结果:
{
"id": 2,
"permissions": 3,
"is_banned": 0,
"datetime_last_logged": "2020-04-20 09:59:25",
"last_login_ip": "127.0.0.1",
"is_deleted": 0,
"logged": [
{
"id": 9,
"user_id": 2,
"datetime_logged": "2020-04-20T07:59:22.000000Z",
"datetime_loggout": null,
"login_ip": "127.0.0.1"
},
{
"id": 10,
"user_id": 2,
"datetime_logged": "2020-04-18T07:59:22.000000Z",
"datetime_loggout": null,
"login_ip": "127.0.0.1"
},
{
"id": 11,
"user_id": 2,
"datetime_logged": "2020-01-20T08:59:23.000000Z",
"datetime_loggout": null,
"login_ip": "127.0.0.1"
},
{
"id": 12,
"user_id": 2,
"datetime_logged": "2020-03-20T08:59:25.000000Z",
"datetime_loggout": null,
"login_ip": "127.0.0.1"
}
]
我需要从我的记录字段中获取计数值,例如:
October - 0, December - 0, January - 1, February - 0, March -1, April - 2
我怎样才能做到这一点?
解决方案
如果您要对这些数据进行大量工作,我建议您在表中创建一个新列,以便您可以更轻松地进行过滤。
你可以得到一个月的碳:
$date = Carbon::parse('2020-03-20T08:59:25.000000Z')->format('F');
输出:
March
此外,您可以制作 foreach:
$logs= [];
foreach($users as $user){
$date = $user->datetime_logged;
$month = Carbon::parse($date)->format('F');
$logs [] = $month;
}
在这里你有所有月份的数组,你只需要计算所有月份:
$count = array_count_values($logs);
输出:
Array
(
[January] => 2
[February] => 2
)
https://www.php.net/manual/en/function.array-count-values.php
推荐阅读
- cakephp - 通过匹配取消链接特定的关联数据
- html - 如果我的图像没有被渲染,我该怎么办?
- pandas - 多次分组/聚合后过滤/查询 Pandas DataFrame
- web-scraping - 我无法获取 h2 标签内的文本,我在下面给出了我的代码,如果有人可以在这件事上帮助我,那将非常有帮助
- javascript - 错误 [ERR_REQUIRE_ESM]: ES 模块的 require()
- mongodb - 如何通过聚合中的特定字段从不同集合返回特定文档
- collections - 如何在 Collections List Shopify 上插入自定义代码
- wordpress - 在 next.js 中展平来自 WpGraphql 的 Apollo 响应
- f# - 在 F# 中,类型名称前的 # 是什么意思?
- java - 如何使用带有 java 的 smooks 将 json 转换为 EDIFACT