我有一个订单表,其中包含created_at,我想知道如何处理过去24小时的订单并按小时分组并显示该小时的总订单。
$hourlyOrders = Order::where('created_at', '>', Carbon::now()->subDays(1))->count();
我想我需要以某种方式分组小时?我只需要计算每小时的订单。
编辑:
因此,如果我现在检查将会有订单总数从上午9点到10点,早上8点到9点,早上7点到早上8点回到24次迭代,但这取决于查询运行的时间...如果你看到我的意思。
答案 0 :(得分: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();
答案 1 :(得分:0)
按小时按结果分组的纯SQL将是:
SELECT count(*)
FROM Order
GROUP BY hour( created_at );