request = $request; } /** * Apply the filters. * * @param \Illuminate\Database\Eloquent\Builder $builder * @return \Illuminate\Database\Eloquent\Builder */ public function apply($builder) { $this->builder = $builder; foreach ($this->getFilters() as $filter => $value) { if (method_exists($this, $filter)) { $this->$filter($value); } } return $this->builder; } /** * Fetch all relevant filters from the request. * * @return array */ public function getFilters() { return array_filter($this->request->only($this->filters)); } }