get() : $query->paginate($perPage); } public function scopeFilter(Builder $query, Request $request, array $searchables = []): Builder { $searchables = $this->searchables ?: $searchables; return $query ->when($request->filled('search'), function ($query) use ($searchables, $request) { $query->where(function ($query) use ($searchables, $request) { foreach ($searchables as $key => $field) { if ($key === 0) { $query->where($field, 'LIKE', "%{$request->search}%"); continue; } $query->orWhere($field, 'LIKE', "%{$request->search}%"); } }); }); } public function scopeCustomOrderBy(Builder $query, Request $request): Builder { return $query ->when( $request->filled('orderBy') && $request->filled('sortBy'), fn ($query) => $query->orderBy($request->orderBy, $request->sortBy), fn ($query) => $query->latest() ); } }