Use when() for Cleaner Queries
Writing conditional queries in Laravel often gets messy with if statements. Luckily, Laravel gives us a neat helper: when().
Instead of this:
$query = User::query();
if (request('role')) {
$query->where('role', request('role'));
}
if (request('active')) {
$query->where('active', true);
}
$users = $query->get();
You can write this:
$users = User::query()
->when(request('role'), fn($q, $role) => $q->where('role', $role))
->when(request('active'), fn($q) => $q->where('active', true))
->get();
✅ Cleaner
✅ More readable
✅ No repeated if blocks