Laravel 4+ tilbyder dig disse metoder:whereDay()
, whereMonth()
, whereYear()
(#3946
) og whereDate()
(#6879
).
De udfører SQL DATE()
arbejde for dig, og administrer forskellene i SQLite.
Dit resultat kan opnås således:
->whereDate('date', '<=', '2014-07-10')
For flere eksempler, se den første besked fra #3946 og denne Laravel Daily-artikel .
Opdatering: Selvom ovenstående metode er praktisk, som bemærket af Arth, er den ineffektiv på store datasæt, fordi DATE()
SQL-funktion skal anvendes på hver post og dermed kassere det mulige indeks.
Her er nogle måder at foretage sammenligningen på (men læs venligst noterne nedenfor):
->where('date', '<=', '2014-07-10 23:59:59')
->where('date', '<', '2014-07-11')
// '2014-07-11'
$dayAfter = (new DateTime('2014-07-10'))->modify('+1 day')->format('Y-m-d');
->where('date', '<', $dayAfter)
Bemærkninger:
- 23:59:59 er okay (for nu) på grund af 1-sekunds præcision, men kig på denne artikel:23:59:59 er ikke slutningen på dagen. Nej, virkelig!
- Husk på tilfældet "nul dato" ("0000-00-00 00:00:00"). Selvom disse "nul-datoer" bør undgås, er de kilde til så mange problemer. Gør hellere feltet nullbart, hvis det er nødvendigt.