private function addSearchField($name, $value, ApiInterface $entity, $alias) {
        $operator = "=";
        if(preg_match("/[<|>]$/", $name)) {
            $operator = substr($name, -1) . "=";
            $name = substr($name, 0, -1);

            $fieldTypes = $entity->getFieldTypes();
            $fieldTypesWhiteList = [ApiInterface::FIELD_TYPE_DATE, ApiInterface::FIELD_TYPE_DATE_TIME, ApiInterface::FIELD_TYPE_DOUBLE, ApiInterface::FIELD_TYPE_INT];
            if(!in_array($fieldTypes[$name], $fieldTypesWhiteList)) {
                throw new Exception(
                    'Cannot perform ' . $operator . ' search on any fields that are not in ' . implode(", ", $fieldTypesWhiteList) . ': ' . $name . ' has a type of ' . $fieldTypes[$name],
                    400
                );
            }
        }

        $sql = $alias . '.' . $name;
        if(is_array($value)) {
            $attributes = [];
            foreach($value as $subValue) {
                $entity->writeAttribute($name, $subValue);
                $attributes[] = $entity->readAttribute($name);
            }
            $this->getCriteria()->inWhere($sql, $attributes);
        } else {
            $entity->writeAttribute($name, $value);
            $attribute = $entity->readAttribute($name);
            $params = [];


            if (is_null($attribute)) {
                $sql .= " IS NULL";
            } else {
                $attribute .= ''; //Make sure to convert to string, for Date and DateTime
                if (preg_match('@(^|[^\\\])%@', $attribute)) {
                    $operator = ' LIKE ';
                }
                $sql .= $operator . '?0';
                $params[] = $attribute;
            }

            $this->getCriteriaHelper()->andWhere($sql, $params);
        }
    }