TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6363 2.07K
💡 when() в Eloquent — условные запросы без if-else

Если пишешь вот так:
$query = User::query();

if ($request->has('active')) {
$query->where('active', true);
}

if ($request->has('role')) {
$query->where('role', $request->role);
}

$users = $query->get();


У Eloquent есть when() и он делает это элегантно:
$users = User::query()
->when($request->has('active'), fn($q) => $q->where('active', true))
->when($request->role, fn($q, $role) => $q->where('role', $role))
->get();


Второй аргумент when() — это значение условия, оно же автоматически передаётся третьим параметром в колбэк. Не нужно захватывать переменную через use.

Используй это для фильтрации по параметрам запроса, построения поисковых форм и любых условных скоупов. Код становится читаемым как pipeline, а не лестница из if-else.

⚠️ Ловушка: when('0', ...) — не выполнится, потому что '0' приводится к false. Если важна строка "0" — проверяй явно: when($val !== null, ...).

Библиотека пхпшника

#vardump
  • 😁 5
  • 👍 4
  • 🔥 2
  • ❤ 1
More from @phpproglib
  1. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  2. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  3. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
  4. Sep 19, 2026🌞 В Symfony 8.2 появилось 29 новых Bundle — теперь компоненты вроде Mailer, Messenger и C…
  5. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  6. Sep 18, 2026🐸 Библиотека пхпшника
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →