2017-01-08 3 views
2

So habe ich diese Anfrage:Laravel keine Ergebnisse zurückgegeben, wenn sie mit Datetime-Feld arbeiten

Report::whereDate('date', '=', Carbon::now()->format('Y-m-d H:i'))->get(); 

Termine sind wie folgt zum Beispiel gespeichert:

2017-01-08 10:00:00 

Aber ich habe nie irgendwelche Ergebnisse, hat das etwas mit den Sekunden machen? Wenn ja, wie kann ich dies vermeiden und meine Ergebnisse erhalten? Mit einem Mutator vielleicht Sekunden ignorieren?

PS. Ich möchte die Ergebnisse von der angegebenen Zeit erhalten, weil ich es für eine geplante Aufgabe (Befehl) verwende. E-Mails sollten zu bestimmten Zeiten gesendet werden, und die Zeiten variieren :)

+1

Sie werden wahrscheinlich angeben möchten soll eine Reihe von Momenten Ihr Datum in sein. In diesem Fall zwischen 0:00 heute und 23:59 heute. –

+0

Entfernen Sie die Zeit Teil & versuchen. 'whereDate ('Datum', '=', Carbon :: now() -> Format ('Ym-d'))' –

+0

Ich hätte wahrscheinlich erwähnen sollen, dass der Zeitteil ziemlich wichtig ist, sorry :) – Hardist

Antwort

1

tun können Sie versuchen, mit WhereRaw

$format = Carbon::now()->format('Y-m-d H:i'); 
Report::whereRaw("date_format(date, '%Y-%m-%d %H:%i ') = '$format'") 
+0

Danke, versuche es mal :) – Hardist

+0

Habe es zur Arbeit gebracht, ich brauchte nur die Zeit, also änderte ich es in 'time_format' und es funktionierte. Danke vielmals :) – Hardist

0

hinzufügen date-$dates Eigenschaft im Report Modell:

protected $dates = ['date']; 

Sie sagen, Sie wollen die Zeit überprüfen, so dass nur das tun :

Report::where('date', Carbon::now())->get(); 
+0

Ich hätte wahrscheinlich erwähnen sollen, dass der Zeitteil ziemlich wichtig ist, sorry :) Ich habe das Datum bereits zu meinem '$ dates' Array hinzugefügt, danke :) – Hardist

+0

Ich werde meine Frage bearbeiten, um klarer zu machen, was ich will, Entschuldigung – Hardist

0

ich es herausgefunden, wollte ich nicht eine boolean in meiner Datenbank verwenden, ob oder nicht eine E-Mail für den spezifischen Bericht, wurde, weil sie täglich Berichte verschickt zu überprüfen sind. Aber ich werde einen anderen Cronjob machen, um diese Booleans am Ende des Tages zurückzusetzen.

-1

Ich denke, ich habe die Frage falsch verstanden.

Die bequeme Methode zum Anpassen der Datumszeit ist die Verwendung von Carbon.

Fügen Sie in Ihrem Modell die folgende Zeile hinzu.

protected dates = ['date']; 

Dadurch werden Ihre Daten als Carbon-Instanz gespeichert.

Jetzt können Sie

Report::whereDate('date', Carbon::now())->get(); 
+1

Werfen Sie einen Blick auf http://laraveldaily.com/eloquent- date-filtering-seredate-and-other-methods/ –

Verwandte Themen