model::query() ->when($request->search, function ($query) use ($request) { $query->where('name', 'like', $request->search.'%'); }) ->orderBy($orderColumn, $orderDirection) ->paginate($perPage); } public function getAll($request) { $orderColumn = request('sort_column', 'id'); $orderDirection = request('sort_direction', 'desc'); if (! in_array($orderColumn, ['id', 'name', 'created_at'])) { $orderColumn = 'id'; } if (! in_array($orderDirection, ['asc', 'desc'])) { $orderDirection = 'desc'; } return $this->model::query() ->when($request->search, function ($query) use ($request) { $query->where('name', 'like', $request->search.'%'); }) ->orderBy($orderColumn, $orderDirection) ->get(); } public function getById(int $id) { return $this->model::where('id', $id)->first(); } public function create(array $data) { return $this->model::create($data); } public function update(int $id, array $data) { $model = $this->model::where('id', $id)->first(); $model->update($data); return $model; } public function delete(int $id) { $model = $this->model::where('id', $id)->first(); return $model->delete(); } }