2017-03-16 24 views
2

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日間のデータをチャンクとして追加することができますが、クエリだけでどうすればいいですか?

ありがとうございました。

+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週、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週以上経過したデータをどのように返しますか? –

+0

hmm、これでもっとデバッグする必要があると思います。DB :: raw( '週間週(p_date_time)週')を削除しようとすると、選択した日付がはっきりと確認できます – martiendt

答えて

0

Carbonクエリーの誤植かもしれません。 subMonth(4)subMonths(4)に変更してください。 's'で。

+0

subMonth )またはsubMonths(4)、 –

関連する問題