romulo27's avatar

Call to undefined method Illuminate\\Database\\Eloquent\\Builder::getFilter()

I created a filter with pagination inside of laravel, but when I use it in a query it shows me an error.

What's wrong? "message": "Call to undefined method Illuminate\\Database\\Eloquent\\Builder::getFilter()",

public function getFilter($filter = null, $field = null, $paginate = null){
        if($filter && $field){
            if($paginate){// se houver paginação
                return $this->where($filter, "LIKE", "%{$field}%")->paginate($paginate);
            }
            // caso a paginação venha vazia
            return $this->where($filter, "LIKE", "%{$field}%")->get();
        }
        if($paginate){ // Verifica novamente a paginação
            return $this->paginate($paginate);
        }
        return $this->get();
    }

method's

public function index(){
        $cities = $this->city->with('states')->paginate(15); // getFilter(request()->input('field'), request()->input('filter'), request()->input('paginate'));
        if (!$cities){
            return $this->response->errorNotFound('cidade não encontrada');
        }

        //return response()->json($cities, 200);
        return $this->response->withCollection($cities, new CityTransformer);
    }

    public function getByStateId($stateId){
        $result =  $this->city->where('state_id', $stateId)->paginate(15); // getFilter(request()->input('field'), request()->input('filter'), request()->input('paginate'));
        if (!$result){
            return $this->response->errorNotFound('cidade não encontrada');
        }

        //return response()->json($result, 200);
        return $this->response->withCollection($result, new CityTransformer);
    }
0 likes
5 replies
shushkin's avatar

Where exactly you create method getFilter() in model?

romulo27's avatar

@SHUSHKIN - make a dynamic filter, along with paging, for the front to consume the api

shushkin's avatar
shushkin
Best Answer
Level 5

okey try to write $this->getFilter(request()->input('field'), request()->input('filter'), request()->input('paginate'))

munazzil's avatar

@romulo27 Try as like below and check it working or not change get() to count() it is most convenience .

    return $this->where($filter, "LIKE", "%{$field}%")->count();

Please or to participate in this conversation.