model->with('roles'); if (!empty($data['search'])) { $search = $data['search']; $query->where(function ($q) use ($search) { $q->where('firstname', 'like', "%{$search}%") ->orWhere('lastname', 'like', "%{$search}%") ->orWhere('username', 'like', "%{$search}%") ->orWhere('email', 'like', "%{$search}%"); }); } if (!empty($data['role'])) { $query->whereHas('roles', fn($q) => $q->where('name', $data['role'])); } $perPage = $data['per_page'] ?? 15; return $query->orderBy('id', 'desc')->paginate($perPage); } }