/** * {@inheritdoc} * * @param \Versatile\Search\Contracts\Criteria $criteria * @return \Versatile\Search\Contracts\Search **/ public function search(CriteriaContract $criteria) { if ($factory = $this->nearestForClass($criteria->modelClass())) { return call_user_func($factory, $criteria); } throw new OutOfBoundsException('No factory for ' . $criteria->modelClass() . ' found'); }
/** * Removes a sort key (and direction) * * @param string $key * @return self **/ public function removeSort($key) { $this->criteria->removeSort($key, $order); return $this; }
protected function addSortIfPassed(CriteriaContract $criteria, array $params) { if (!isset($params[$this->sortParam])) { return; } $direction = isset($params[$this->directionParam]) ? $params[$this->directionParam] : 'asc'; $direction = in_array($direction, ['asc', 'desc']) ? $direction : 'asc'; $criteria->sort($params[$this->sortParam], $direction); }