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?

zeetit
quelle

Antworten:

172

Verwendung subDays()Methode:

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', Carbon::now()->subDays(30))
           ->get();
Alexey Mezenin
quelle
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();
Chris Kelker
quelle