2017-03-16 1 views
2

Ich versuche, die letzten 4 Monate Daten nach Woche in Laravel gefiltert zu bekommen. Dies ist Code, den ich derzeit haben:Holen Sie sich Last n Monate Daten Gruppe von Woche - 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(); 

Dieser Code gibt mir 52 Ergebnisse basieren auf Daten für 1 ganzes Jahr (Wie ich WEEK bin mit). Aber ich brauche ungefähr 17 Ergebnisse für die letzten 4 Monate.

Ich kann das passieren durch Sammeln von jedem Tag und dann Hinzufügen von 7 Tagen Daten als Chunk für die letzten 4 Monate, aber wie kann ich es mit Abfrage allein tun?

Danke.

+0

Ihr Code sollte in Ordnung sein, wird es Daten von 4 Monat zurückgeben. Ich teste deine Anfrage und es ist das erwartete Ergebnis. Können Sie in Ihrem Beispiel Ihr Rückgabearray angeben? und ist Ihr 'p_date_time' das' date' oder 'timestamp' Format in Ihrer Datenbank? – martiendt

+0

@martiendt, aktuell ist p_date_time im Datum und es liefert erfolgreich Daten für meine anderen Abfragen. Dies sind die Daten, die ich erhalte: [{"Woche": 1, "Anzahl": 1}, {"Woche": 2, "Anzahl": 1}, {"Woche": 3, "Anzahl": 12}, {"week": 8, "count": 14}, {"week": 9, "count": 274}, {"week": 46, "count": 2}, {"week": 47, "count": 2}, {"week": 48, "count": 1}, {"woche": 49, "count": 3}, {"woche": 50, "count": 3} , {"week": 51, "count": 2}, {"week": 52, "count": 3}] Ich bin auch hier verwirrt. Normalerweise gibt WEEK Daten der letzten 1 Jahr zurück. Aber ich habe ein Zeitlimit von 4 Monaten durch Carbon :: now() -> subMonth (4) gesetzt. Wie werden dann Daten zurückgegeben, die älter als 17 Wochen sind? –

+0

hmm, ich denke, brauchen mehr debug hier, versuchen, DB :: raw ('Woche (p_date_time) AS Woche') 'so können wir Ihr ausgewähltes Datum klar – martiendt

Antwort

0

Vielleicht nur ein Tippfehler in Ihrer Carbon-Abfrage. Ändern Sie subMonth(4) zu subMonths(4). Mit 's'.

+0

es gibt den gleichen Wert, ob ich subMonth (4) oder SubMonths (4), –

Verwandte Themen