2017-03-16 63 views
2

我想獲取最近4個月的數據按周過濾在Laravel中。這是代碼我目前有:獲取最後n個月按周分組數據 - Laravel

$analytics = 
     Data::select([ 
      DB::raw('WEEK(p_date_time) AS week'), 
      DB::raw('COUNT(id) AS count'), 
     ]) 
      ->where('p_id', $p_id) 
      ->where('p_date_time', '>=', Carbon::now()->subMonth(4)) 
      ->groupBy('week') 
      ->orderBy('week') 
      ->get() 
      ->toArray(); 

此代碼給我基於數據1全年52條(由於我使用WEEK)。但是我最近4個月需要大約17項結果。

我可以通過收集每一天,然後在過去4個月添加7天的數據塊來實現這一點,但我怎樣才能通過查詢來完成?

謝謝。

+0

你的代碼應該沒問題,它會從4個月前返回數據。我測試你的查詢,它是預期的返回結果。你可以在你的例子中提供你的返回數組嗎?你的'p_date_time'是數據庫中的'date'或'timestamp'格式嗎? – martiendt

+0

@martiendt,當前p_date_time是在日期,它成功地爲我的其他查詢返回數據。這是我得到的數據: [{「week」:1,「count」:1},{「week」:2,「count」:1},{「week」:3,「count」: 12},{ 「周」:8中, 「計數」:14},{ 「周」:9 「計數」:274},{ 「周」:46, 「計數」:2},{ 「周」: 47, 「計數」:2},{ 「周」:48, 「計數」:1},{ 「周」:49, 「計數」:3},{ 「周」:50, 「計數」:3} ,{「week」:51,「count」:2},{「week」:52,「count」:3}] 我也很困惑。通常WEEK返回最近1年的數據。但是我已經通過Carbon :: now() - > subMonth(4)設置了4個月的時間限制。那麼它如何返回超過17周的數據? –

+0

嗯,我認爲需要更多的調試,試着刪除DB :: raw('WEEK(p_date_time)AS week')',這樣我們就可以清楚地看到你選擇的日期 – martiendt

回答

0

可能只是碳查詢中的拼寫錯誤。將subMonth(4)更改爲subMonths(4)。用's'。

+0

無論我使用subMonth(4 )或子月(4), –

相關問題