Diskussion SQL Abfrage zeigt falsche Daten an

Werner S

Mitglied
Grüß euch,

folgende Abfrage gibt mir nicht nur die Termine der nächsten 3 Tage aus was es eigentlich auch machen soll, sondern auch alle Termine in der Vergangenheit.

Wo liegt der Fehler? Sehe wohl den Wald vor lauter Bäumen nicht.

PHP:
Event::where('user_id', Auth::user()->id)->where('status', 0)->whereDate('start', '<', date('Y-m-d', strtotime('+3 days')))->get();
 

Mat

Aktives Mitglied
Du sagst ihm ja nur, dass er dir alle Termine anzeigen soll, die älter sind als 'start' + 3 Tage. Gibt's da kein Between? Wenn nicht, kannst du da noch eine weitere Einschränkung hinzufügen, die es auch noch auf Termine >= 'start' begrenzt.

Aber es würde mich wundern, wenn es da kein whereDateBetween gibt.
 

JR Cologne

Administrator
Teammitglied
whereBetween() müsste eigentlich auch mit Daten funktionieren, eine explizite Methode whereDateBetween() gibt es nicht.

Gibt die Events mit dem Startdatum im Zeitraum heute bis in drei Tagen zurück:
PHP:
Event::where('user_id', Auth::user()->id)->where('status', 0)->whereBetween('start', [ Carbon::now()->toDateString(), Carbon::now()->addDays(3)->toDateString() ])->get();

Wie du siehst, habe ich die PHP-Standardfunktion date() durch Carbon ersetzt, da diese Date-Library mit Laravel standardmäßig dabei ist und das Ganze etwas schöner macht.
 

Werner S

Mitglied
whereBetween() müsste eigentlich auch mit Daten funktionieren, eine explizite Methode whereDateBetween() gibt es nicht.

Gibt die Events mit dem Startdatum im Zeitraum heute bis in drei Tagen zurück:
PHP:
Event::where('user_id', Auth::user()->id)->where('status', 0)->whereBetween('start', [ Carbon::now()->toDateString(), Carbon::now()->addDays(3)->toDateString() ])->get();

Wie du siehst, habe ich die PHP-Standardfunktion date() durch Carbon ersetzt, da diese Date-Library mit Laravel standardmäßig dabei ist und das Ganze etwas schöner macht.
Ah, jetzt funktioniert es.
Kommt direkt mit auf meine Liste was ich mir in der Doku genauer anschauen muss.
 
Oben Unten