Использование оператора between в Laravel Eloquent: примеры
Быстрый ответ
Метод whereBetween
в Eloquent позволяет отфильтровать данные в указанном диапазоне значений:
// "Привет, Laravel, найди мне пользователей, зарегистрировавшихся в заданный период времени!"
$users = User::whereBetween('created_at', [$startDate, $endDate])->get();
Здесь мы выбираем Пользователей, чья дата регистрации попадает в период между $startDate
и $endDate
.
В глубину: разбор метода whereBetween
Метод whereBetween
в Eloquent позволяет выполнять запросы в рамках заданного диапазона, упрощая при этом чтение и поддержку кода. Он представляет собой эффективный инструмент для работы с большими объемами данных, создания отчетов или фильтрации записей для улучшения пользовательского опыта.
Исключение граничных значений с использованием whereNotBetween
Метод whereNotBetween
подойдет в тех случаях, когда необходимо исключить из выборки те значения, которые равны границам диапазона:
// "Привет, Laravel, исключи из выборки товары с минимальной и максимальной ценами!"
$products = Product::whereNotBetween('price', [$lowPrice, $highPrice])->get();
Так, мы получаем Товары со стоимостью, которая строго выходит за рамки указанного диапазона цен.
Визуализация
Представьте, что вы ищете в старом сундуке (🗃️) предметы определенной массы:
Сундук с сокровищами (🗃️): [Жемчужина 1г, Золотая монетка 10г, Изумруд 20г, Серебряная чаша 50г]
Пользуясь оператором BETWEEN
в Eloquent, можно отфильтровать предметы, масса которых составляет от 10 г до 30 г:
// "Привет, Laravel! Покажи мне сокровища, вес которых составляет от минимального до максимального значения!"
Item::whereBetween('weight', [10, 30])->get();
В результате выборки мы получим исключительно те сокровища, которые соответствуют нашим требованиям к весу:
[Золотая монетка 10г, Изумруд 20г]
Таким образом, мы выбрали предметы, вес которых находился исключительно в заданном диапазоне.
Ошибки совместимости и общие недоработки
Убедитесь, что ваш код соответствует версии Laravel 10 и новее для избегания проблем совместимости. Распространенные ошибки включают несовпадение типов данных, проблемы с часовыми поясами и неправильное понимание механизма «жадной загрузки».
Повышаем производительность
Несмотря на удобство использования whereBetween
, иногда приходится использовать напрямую SQL для решения некоторых специфических задач, что может помочь оптимизировать сложные запросы и улучшить производительность.
Полезные материалы
- Database: Query Builder – Laravel 8.x — руководство Laravel по работе с запросами, включая метод
whereBetween
. - php – Как можно сортировать коллекции Eloquent по нескольким столбцам? – Stack Overflow — обсуждение различных подходов к сортировке в Eloquent на площадке Stack Overflow.
- 20 советов и рекомендаций по работе с Laravel Eloquent – Laravel News — подробный обзор советов и рекомендаций по использованию Eloquent ORM в Laravel.
- SQL-оператор BETWEEN – W3Schools — подробное описание SQL-оператора BETWEEN, который лежит в основе метода
whereBetween
в Laravel. - Учебник | DigitalOcean — подробное описание метода
between
в Laravel Eloquent на сайте DigitalOcean. - YouTube — видео-урок, посвященный продвинутым приемам работы с Eloquent.