2016-06-08 180 views
1

我有一个已经created_at的订单表,我想知道如何使用最近24小时的订单,并按小时对它们进行分组,并显示该小时的总订单。在过去24小时的订单数

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

我想那我需要以某种方式GROUPBY小时?我只需要计算小时订单。

编辑:

所以,如果我现在检查会有来自9-10am,8 am-9am,7 am-8am回通过24次迭代订单总数,但它是依赖于查询运行时上......如果你看到我的意思是。

回答

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(); 
+0

这似乎是只返回在过去的24小时内没有按小时计数......感谢您花时间帮助您h –

+0

嗨亚辛, 如果你改变 - >选择到 - > selectRaw它完美的作品:) 谢谢! –

0

普通的SQL组由小时,结果将是:

SELECT count(*) 
FROM Order 
GROUP BY hour(created_at); 
相关问题