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天的數據塊來實現這一點,但我怎樣才能通過查詢來完成?
謝謝。
你的代碼應該沒問題,它會從4個月前返回數據。我測試你的查詢,它是預期的返回結果。你可以在你的例子中提供你的返回數組嗎?你的'p_date_time'是數據庫中的'date'或'timestamp'格式嗎? – martiendt
@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周的數據? –
嗯,我認爲需要更多的調試,試着刪除DB :: raw('WEEK(p_date_time)AS week')',這樣我們就可以清楚地看到你選擇的日期 – martiendt