Ich möchte alle Zeilen in meiner Datenbanktabelle zurückgeben, die einen Tag oder weniger alt sind. Ich benutze Laravel 4. Das habe ich versucht:
%Vor% Das funktioniert nicht. Ich lese die Dokumentation und es scheint nicht so, als ob Sie Laravel MySQL-Funktionen übergeben können. timestamp
ist ein Datetime-Feld. Wie kann ich diese Daten in Laravel 4 vergleichen?
Die Antwort, die user1977808 Ihnen gegeben hat, ist nicht gut, weil MySQL keinen Index für die timestamp-Spalte verwenden kann, da er für jede Zeile eine Ausgabe der Funktion DATE_SUB berechnen muss. Vermeiden Sie solche Abfragen, sie müssen jedes Mal die gesamte Tabelle bearbeiten!
Wie wäre es mit so etwas:
%Vor% Ich habe die >=
da drin gesetzt, weil du gesagt hast "ein Tag oder weniger alt", also müssen sie einen Zeitstempel haben, der später ist als gestern.
Alternativ
Sie können die Carbon API verwenden, die mit Laravel gebündelt ist.
%Vor%Referenz: Ссылка
Sie können auch eine unbearbeitete Abfrage ausführen, indem Sie Folgendes verwenden:
%Vor%Sie haben das Modellobjekt nicht nur in den Ergebnissen var
Sie könnten auch whereDate()
, whereDay()
, whereMonth()
und whereYear()
verwenden. In diesem Fall könnte whereDate()
als solches mit den einfachen Datumsfunktionen von Carbon verwendet werden:
return MainContact::whereDate('dateField', '<', Carbon::now()->subDay())->get();