【问题标题】:Get data by week laravel for graph按周 laravel 获取图表数据
【发布时间】:2021-09-13 09:53:34
【问题描述】:

我在查询图表数据时遇到问题,我希望得到类似的结果

[count_week_1, count_week_2, count_week_3, count_week_4]

但我不知道如何获得它,请帮助我

餐桌产品

+-----+------+---------------------+
| id  | name | created_at          |
+-----+------+---------------------+
| 1   | test | 2021-06-1 00:00:00  |
+-----+------+---------------------+
|                ...               |
+-----+------+---------------------+
| 297 | test | 2021-06-30 00:00:00 |
+-----+------+---------------------+

【问题讨论】:

  • 你的数据库结构是什么?哪些数据是通过计数聚合的?
  • 表中所有数据

标签: mysql database laravel eloquent laravel-query-builder


【解决方案1】:

使用 Laravel 的查询构建器,您的代码将如下所示:

DB::table('product')
    ->selectRaw('COUNT(id) AS count_week')
    ->groupByRaw('DATEPART(weekday, created_at)')
    ->get()
    ->pluck('count_week');

当然,如果你有模型,它看起来更像这样:

Product::selectRaw('COUNT(id) AS count_week')
    ->groupByRaw('DATEPART(weekday, created_at)')
    ->get()
    ->pluck('count_week');

【讨论】:

  • 我在 'group statement' 中发现了一个错误“未知列 'DATEPART(weekday, created_at)'”
  • 我只想获取本月的所有数据并按周计算所有数据,例如像这样 [24, 312, 23, 12]
  • 我知道,你想要什么。这就是我的回答想要反映的。
  • 除此之外,我修正了我的答案。
  • @richoandika 你检查过我更新的答案了吗?
【解决方案2】:

已解决

    for ($i = 0; $i < 4; $i++) {
        $data[] = Product::whereBetween(
            'created_at',
            [Carbon::now()->subWeek($i + 1)->format('Y-m-d H:i:s'), Carbon::now()->subWeek($i)->format('Y-m-d H:i:s')]
        )->get()->count();
    }
    return json_encode(array_reverse($data));

【讨论】:

    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2021-09-23
    • 1970-01-01
    • 2017-08-10
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多