Laravelで過去4ヶ月のデータを週ごとにフィルタリングしようとしています。最後の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週、46週、2週、{週} 47、 "count":2}、{"week":48、 "count":1}、{"week":49、 "count":3}、{"week":50、 "count":3} 、{"week":51、 "count":2}、{"week":52、 "count":3}] ここでも混乱します。通常、WEEKは過去1年間のデータを返します。しかし私はCarbon :: now() - > subMonth(4)で4ヶ月の制限時間を設定しました。その後、17週以上経過したデータをどのように返しますか? –
hmm、これでもっとデバッグする必要があると思います。DB :: raw( '週間週(p_date_time)週')を削除しようとすると、選択した日付がはっきりと確認できます – martiendt