Иногда в Eloquent запросах мы пишем кучу if, чтобы добавить фильтры. Но есть способ красивее — метод when().

$query = User::query()
    ->when(request('role'), fn($q, $role) => 
        $q->where('role', $role)
    )
    ->when(request('active'), fn($q) => 
        $q->where('active', true)
    )
    ->get();

📌 Что делает when():

  • Проверяет условие (первый аргумент)
  • Если оно true — выполняет колбэк (второй аргумент)
  • Если false — пропускает

💡 Идеально для динамических фильтров, когда часть параметров может отсутствовать.

🚀 Используйте when(), чтобы писать меньше кода и избавляться от нагромождений if.

Евгений Носенко

Евгений Носенко

Fullstack разработчик · Мастерская кода

Проектирует и разрабатывает системы автоматизации, CRM, интеграции и внутренние сервисы для бизнеса.

Хотите такой же результат?

Бесплатно посчитаем ваш проект и покажем, где автоматизация даст максимальный эффект.

Обсудить проект →