Laravel / Eloquent und Vergleichen von Daten

8

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?

    
sehummel 15.01.2013, 20:36
quelle

5 Antworten

9

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.

    
duality_ 15.01.2013, 22:27
quelle
3

Alternativ

Sie können die Carbon API verwenden, die mit Laravel gebündelt ist.

%Vor%

Referenz: Ссылка

    
afifahmi 18.10.2015 06:08
quelle
2
%Vor%     
socketman 15.01.2013 22:10
quelle
0

Sie können auch eine unbearbeitete Abfrage ausführen, indem Sie Folgendes verwenden:

%Vor%

Sie haben das Modellobjekt nicht nur in den Ergebnissen var

    
Cees van Egmond 15.01.2013 21:47
quelle
0

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();

    
Jean-Philippe Murray 13.03.2017 11:44
quelle

Tags und Links