我正在学习 JSON,我想显示自定义输出。日期相同,必须相加。
我的数据库表数据如下:
id no_id type created_at
------------------------------------------------
1 1 post 2023-10-11T17:13:19.000000Z
2 85 post 2023-10-11T17:13:19.000000Z
3 23 post 2023-10-12T17:24:33.000000Z
4 40 post 2023-10-12T17:24:33.000000Z
5 87 product 2023-10-12T17:24:33.000000Z
示例:
2023-10-11 => 2
2023-10-12 => 3
我的Laravel的控制器文件如下:
class StatController extends Controller {
public function index() {
$stats = Stat::groupBy(DB::raw('DATE(created_at)'))->get()->toArray();
return array_reverse($stats);
}
}
控制器代码的输出如下(json):
[
{
"id": 2,
"no_id": 85,
"type": "post",
"created_at": "2023-10-11T17:13:19.000000Z"
},
{
"id": 5,
"no_id": 87,
"type": "product",
"created_at": "2023-10-12T17:24:33.000000Z"
}
]
但是我想显示 JSON 输出,如下所示:
[
{
"date": "2023-10-11",
"totalViews": "2"
},
{
"date": "2023-10-12",
"totalViews": "3"
}
]
您可以尝试 groupBy
created_at
并像这样计算每个组:
$stats = Stat::selectRaw('DATE_FORMAT(created_at,'%Y-%m-%d') as date, COUNT(*) as totalViews')
->groupBy(DB::raw('DATE(created_at)'))
->get()
->toArray();