Использование оператора between в Laravel Eloquent: примеры

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Метод whereBetween в Eloquent позволяет отфильтровать данные в указанном диапазоне значений:

php
Скопировать код
// "Привет, Laravel, найди мне пользователей, зарегистрировавшихся в заданный период времени!"
$users = User::whereBetween('created_at', [$startDate, $endDate])->get();

Здесь мы выбираем Пользователей, чья дата регистрации попадает в период между $startDate и $endDate.

В глубину: разбор метода whereBetween

Метод whereBetween в Eloquent позволяет выполнять запросы в рамках заданного диапазона, упрощая при этом чтение и поддержку кода. Он представляет собой эффективный инструмент для работы с большими объемами данных, создания отчетов или фильтрации записей для улучшения пользовательского опыта.

Исключение граничных значений с использованием whereNotBetween

Метод whereNotBetween подойдет в тех случаях, когда необходимо исключить из выборки те значения, которые равны границам диапазона:

php
Скопировать код
// "Привет, Laravel, исключи из выборки товары с минимальной и максимальной ценами!"
$products = Product::whereNotBetween('price', [$lowPrice, $highPrice])->get();

Так, мы получаем Товары со стоимостью, которая строго выходит за рамки указанного диапазона цен.

Визуализация

Представьте, что вы ищете в старом сундуке (🗃️) предметы определенной массы:

Markdown
Скопировать код
Сундук с сокровищами (🗃️): [Жемчужина 1г, Золотая монетка 10г, Изумруд 20г, Серебряная чаша 50г]

Пользуясь оператором BETWEEN в Eloquent, можно отфильтровать предметы, масса которых составляет от 10 г до 30 г:

SQL
Скопировать код
// "Привет, Laravel! Покажи мне сокровища, вес которых составляет от минимального до максимального значения!"
Item::whereBetween('weight', [10, 30])->get();

В результате выборки мы получим исключительно те сокровища, которые соответствуют нашим требованиям к весу:

Markdown
Скопировать код
[Золотая монетка 10г, Изумруд 20г]

Таким образом, мы выбрали предметы, вес которых находился исключительно в заданном диапазоне.

Ошибки совместимости и общие недоработки

Убедитесь, что ваш код соответствует версии Laravel 10 и новее для избегания проблем совместимости. Распространенные ошибки включают несовпадение типов данных, проблемы с часовыми поясами и неправильное понимание механизма «жадной загрузки».

Повышаем производительность

Несмотря на удобство использования whereBetween, иногда приходится использовать напрямую SQL для решения некоторых специфических задач, что может помочь оптимизировать сложные запросы и улучшить производительность.

Полезные материалы

  1. Database: Query Builder – Laravel 8.x — руководство Laravel по работе с запросами, включая метод whereBetween.
  2. php – Как можно сортировать коллекции Eloquent по нескольким столбцам? – Stack Overflow — обсуждение различных подходов к сортировке в Eloquent на площадке Stack Overflow.
  3. 20 советов и рекомендаций по работе с Laravel Eloquent – Laravel News — подробный обзор советов и рекомендаций по использованию Eloquent ORM в Laravel.
  4. SQL-оператор BETWEEN – W3Schools — подробное описание SQL-оператора BETWEEN, который лежит в основе метода whereBetween в Laravel.
  5. Учебник | DigitalOcean — подробное описание метода between в Laravel Eloquent на сайте DigitalOcean.
  6. YouTube — видео-урок, посвященный продвинутым приемам работы с Eloquent.