2016-06-08 177 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); 
相關問題