// Модель User
public function scopeFilter($query, array $filters)
{
return $query
->when($filters['status'] ?? false,
fn($q, $status) => $q->where('status', $status))
->when($filters['role'] ?? false,
fn($q, $role) => $q->where('role', $role))
->when($filters['search'] ?? false,
fn($q, $search) => $q->where('name', 'like', "%{$search}%"))
->when($filters['date_from'] ?? false,
fn($q, $date) => $q->whereDate('created_at', '>=', $date))
->when($filters['date_to'] ?? false,
fn($q, $date) => $q->whereDate('created_at', '<=', $date));
}
// Контролер - чисто і просто
public function index(Request $request)
{
return User::filter($request->only([
'status', 'role', 'search', 'date_from', 'date_to'
]))->paginate();
}