Laravel Carbon subtrahiert Tage vom aktuellen Datum


79

Ich versuche, Objekte aus dem Modell "Benutzer" zu extrahieren, deren created_atDatum seit heute mehr als 30 Tage beträgt .

Carbon :: now () ==> Ich möchte als ==> Carbon :: now () - 30 Tage

$users = Users::where('status_id', 'active')
               ->where( 'created_at', '<', Carbon::now())
               ->get();

Wie kann dies erreicht werden?

Antworten:


172

Verwendung subDays()Methode:

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', Carbon::now()->subDays(30))
           ->get();

3
Sind Sie sicher, dass Sie '<' in '>' ändern möchten, damit Benutzer vor mehr als 30 Tagen erstellt werden?
Chris Forrence

2
Mein Zustand ist, dass das aktuelle Datum mehr als 30 Tage vom aktuellen Datum entfernt ist. Ich denke, diese Logik erledigt die Aufgabe für mich
zeetit

2
Ich bin froh, dass es geholfen hat. ) @ChrisForrence Ja, wenn ich verwenden würde <, würden alle Benutzer zurückgegeben, die vor dem now minus 30 daysPunkt erstellt wurden.
Alexey Mezenin

2
@AlexeyMezenin Das ist es, wonach der ursprüngliche Fragesteller sucht. Am Beispiel von heute (13. Dezember) würden "mehr als 30 Tage ab heute" Benutzer sein, die vor dem 13. November erstellt wurden.
Chris Forrence

Ich denke seine moreMittel laterhier. Carbon::now() ==> I want as ==> Carbon::now() - 30daysErklärt auch ziemlich genau, was OP will.
Alexey Mezenin

5

Sie können strtotime jederzeit verwenden, um die Anzahl der Tage ab dem aktuellen Datum zu verringern :

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', date('Y-m-d', strtotime("-30 days"))
           ->get();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.