- Опубликовано: 7 мар 2025
- 69
Laravel 11.42: используем встроенные сокращения для дат в Query Builder для чистого и понятного кода
Недавно, когда у меня было свободное время между проектами (читай: не было проектов совсем), я решил посмотреть, что там нового появилось в Laravel 11. Пока Laravel 12 не застал меня врасплох, было решено погрузиться в изучение свежих обновлений. Среди всего прочего моё внимание привлек релиз Laravel 11.42, вышедший 12 февраля 2024 года. И знаете, там есть кое-что действительно интересное!
Что нового появилось в Laravel 11.42?
В новой версии Laravel в Query Builder появилась замечательная штука — встроенные сокращения для указания относительных дат. Это значит, что вместо привычных громоздких конструкций с использованием метода now()->subDays(7)
можно писать простой и читаемый код, вроде "7 days ago"
.
Как это выглядело раньше
Представьте, вам нужно получить все записи, созданные за последние 7 дней. Раньше мы писали примерно такой код:
$posts = Post::whereDate('created_at', '>=', now()->subDays(7))->get();
Не то чтобы слишком сложно, но выглядит немного громоздко, особенно если таких конструкций много и даты разные.
Что изменилось теперь?
Теперь, благодаря Laravel 11.42, можно использовать простые и естественные сокращения дат. Тот же запрос можно переписать вот так:
$posts = Post::whereDate('created_at', '>=', '7 days ago')->get();
Какие сокращения теперь доступны?
Вот несколько примеров сокращений, которые теперь официально поддерживаются:
-
yesterday
(вчера) -
today
(сегодня) -
tomorrow
(завтра) -
3 days ago
(3 дня назад) -
next week
(следующая неделя) -
last month
(прошлый месяц) -
2 years ago
(2 года назад) Эти выражения будут автоматически конвертированы Laravel в соответствующие даты и время.
Реальный пример рефакторинга
Допустим, раньше ваш код выглядел так:
$recentUsers = User::where('last_login', '>=', now()->subMonths(1))->get();
Теперь тот же код выглядит намного чище и понятнее:
$recentUsers = User::where('last_login', '>=', '1 month ago')->get();
Чувствуете разницу? Читабельность и простота кода существенно выросли!
Почему это важно?
Может показаться, что это небольшое улучшение, но оно значительно упрощает чтение и поддержку кода. Чем проще и естественнее выглядит код, тем быстрее его можно понять и обслуживать. Такие улучшения делают жизнь разработчиков проще и приятнее, что особенно ценно в больших проектах или когда к проекту возвращаешься спустя время.
Заключение
Вот так, казалось бы, мелкое изменение в Laravel 11.42 сделало мой день чуть лучше, а код чуть чище. Иногда даже небольшие улучшения способны вдохновить вернуться к старым проектам или просто получить удовольствие от изучения новых возможностей фреймворка. Надеюсь, эта новинка пригодится и вам!
Была статья полезной: