今年的每月查询计数 - Laravel 5.8
Query Count Monthly of this year - Laravel 5.8
今天是 9/25/2019
我正在尝试仅在 2019 年查询我的访客。
然后,我想知道有多少人在
1,2,3,4,5,6,7,8,9
我试过了
$raw = Visitor::query()
->whereYear('created_at', now()->year -1)
->get()
->pluck('created_at');
$data = [];
foreach ($raw as $i=>$date) {
$data[$i] = Carbon::parse($date)->format('m');
if( Carbon::parse($date)->format('m')[0] != 0 ){
$data[$i] = Carbon::parse($date)->format('m');
}else{
$data[$i] = str_replace('0','',Carbon::parse($date)->format('m'));
}
}
// dd($data);
$dataValues = array_count_values($data);
dd($dataValues);
我得到了
array:5 [▼
8 => 314
9 => 916
10 => 764
11 => 827
12 => 765
]
既然这个月只有九月 (9),为什么我以后会得到任何东西?
我该如何更正它?
我希望得到这样的东西
array:9 [▼
0 => 314
1 => 916
2 => 764
3 => 827
4 => 165
5 => 225
6 => 565
7 => 65
8 => 1265
]
我想得到类似数组的输出。
您可以尝试几种方法。
Laravel 自动使 created_at
成为 Carbon 对象,因此如果您这样创建查询:
$raw = Visitor
::whereYear('created_at', \Carbon::now()->year) <<-- Note 2019, not -1 for 2018
->select('created_at')
->get();
这里你得到一个带有 Carbon 日期字段的对象,created_at
。然后你就不需要在你的 if-checks 中使用 parse
了。
不过,我怀疑您的问题的答案可能是,当您想要 2019 年时,您似乎正在提取 2018 年的项目。您在原始查询中减去了今年的一年。
你应该从日期中提取月份然后分组,并且不要忘记 select 计数:
Visitor::whereYear('created_at', Carbon::now()->year)
->select(DB::raw("MONTH(created_at) month"),DB::raw("count('month') as vistors_count"))
->groupby('month')
->get();
今天是 9/25/2019
我正在尝试仅在 2019 年查询我的访客。
然后,我想知道有多少人在
1,2,3,4,5,6,7,8,9
我试过了
$raw = Visitor::query()
->whereYear('created_at', now()->year -1)
->get()
->pluck('created_at');
$data = [];
foreach ($raw as $i=>$date) {
$data[$i] = Carbon::parse($date)->format('m');
if( Carbon::parse($date)->format('m')[0] != 0 ){
$data[$i] = Carbon::parse($date)->format('m');
}else{
$data[$i] = str_replace('0','',Carbon::parse($date)->format('m'));
}
}
// dd($data);
$dataValues = array_count_values($data);
dd($dataValues);
我得到了
array:5 [▼
8 => 314
9 => 916
10 => 764
11 => 827
12 => 765
]
既然这个月只有九月 (9),为什么我以后会得到任何东西?
我该如何更正它?
我希望得到这样的东西
array:9 [▼
0 => 314
1 => 916
2 => 764
3 => 827
4 => 165
5 => 225
6 => 565
7 => 65
8 => 1265
]
我想得到类似数组的输出。
您可以尝试几种方法。
Laravel 自动使 created_at
成为 Carbon 对象,因此如果您这样创建查询:
$raw = Visitor
::whereYear('created_at', \Carbon::now()->year) <<-- Note 2019, not -1 for 2018
->select('created_at')
->get();
这里你得到一个带有 Carbon 日期字段的对象,created_at
。然后你就不需要在你的 if-checks 中使用 parse
了。
不过,我怀疑您的问题的答案可能是,当您想要 2019 年时,您似乎正在提取 2018 年的项目。您在原始查询中减去了今年的一年。
你应该从日期中提取月份然后分组,并且不要忘记 select 计数:
Visitor::whereYear('created_at', Carbon::now()->year)
->select(DB::raw("MONTH(created_at) month"),DB::raw("count('month') as vistors_count"))
->groupby('month')
->get();