/** * @param Builder $model * @param IPaginateRepository $repository * @param array $filters * * @return Builder * @throws BadDataQueryException */ public function apply(Builder $model, IPaginateRepository $repository, array $filters) { foreach ($this->inputService->decode('filters') as $filter) { $model = $this->applyFilter($filter, $model, $repository); } foreach ($filters as $filter) { $model = $this->addFilter($model, $filter); } return $model; }
/** * Get relation array * * @param Repository $repository * @param array $relations * @return array */ private function getRelations(Repository $repository, array $relations = []) { // if we have relation array passed, ignore request input if (count($relations) === 0) { $relations = Input::get('with'); if (!is_array($relations)) { $relations = $this->inputService->decode('with'); } } $result = []; $repo_relations = $repository->relations(); foreach ($relations as $key => $value) { if (in_array($key, $repo_relations)) { $result[] = $key; } elseif (in_array($value, $repo_relations)) { $result[] = $value; } } return $result; }