【问题标题】:Count of orders in last 24 by hour过去 24 小时内的订单数
【发布时间】:2016-10-08 11:04:57
【问题描述】:

我有一个创建了_at 的订单表,我想知道如何获取过去 24 小时的订单并按小时分组并显示该小时的总订单数。

$hourlyOrders = Order::where('created_at', '>', Carbon::now()->subDays(1))->count();

我想我需要以某种方式按小时分组?我只需要计算每小时订单数。

编辑:

所以,如果我现在检查的话,从上午 9 点到 10 点、上午 8 点到 9 点、上午 7 点到 8 点的订单总数会返回到 24 次迭代,但这取决于运行查询的时间……如果你明白我的意思的话。

【问题讨论】:

    标签: php database laravel-5.1


    【解决方案1】:

    试试这个:

    $hourlyOrders = Order::where('created_at', '>', Carbon::now()->subDays(1))
                  ->groupBy(\DB::raw('HOUR(created_at)'))
                  ->count();
    

    编辑:

    $orders = DB::table('Order') // write your table name
             ->selectRaw('count(order_id) as total_orders')) // use your field for count
             ->where('created_at', '>', Carbon::now()->subDays(1))
             ->groupBy(\DB::raw('HOUR(created_at)'))
             ->get();
    

    【讨论】:

    • 它似乎只返回当天的总数,而不是过去 24 小时内按小时计算...感谢您抽出时间提供帮助
    • 嗨 Yasin,如果您将 ->select 更改为 ->selectRaw,它会完美运行 :) 谢谢!
    【解决方案2】:

    按小时按结果分组的普通 SQL 将是:

    SELECT count(*)
    FROM Order
    GROUP BY hour( created_at );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-04
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      相关资源
      最近更新 更多