count json 数组控制器 laravel

问题描述 投票:0回答:1

我正在学习 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"
    }
]
php json laravel controller
1个回答
0
投票

您可以尝试 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();
© www.soinside.com 2019 - 2024. All rights reserved.