public function getValidators() { $validators = parent::getValidators(); if ($this->validation === null) { $validators[] = new Validator\Enum(); } return $validators; }
/** * Returns a column type according to ScalarField object. * * @param Entity\ScalarField $field Type "source". * * @return string */ public function getColumnTypeByField(Entity\ScalarField $field) { if ($field instanceof Entity\IntegerField) { return 'number(18)'; } elseif ($field instanceof Entity\FloatField) { $scale = $field->getScale(); return 'number' . ($scale !== null ? "(*," . $scale . ")" : ""); } elseif ($field instanceof Entity\DatetimeField) { return 'date'; } elseif ($field instanceof Entity\DateField) { return 'date'; } elseif ($field instanceof Entity\TextField) { return 'clob'; } elseif ($field instanceof Entity\BooleanField) { $values = $field->getValues(); if (preg_match('/^[0-9]+$/', $values[0]) && preg_match('/^[0-9]+$/', $values[1])) { return 'number(1)'; } else { return 'varchar2(' . max(strlen($values[0]), strlen($values[1])) . ' char)'; } } elseif ($field instanceof Entity\EnumField) { return 'varchar2(' . max(array_map('strlen', $field->getValues())) . ' char)'; } else { // string by default $defaultLength = false; foreach ($field->getValidators() as $validator) { if ($validator instanceof Entity\Validator\Length) { if ($defaultLength === false || $defaultLength > $validator->getMax()) { $defaultLength = $validator->getMax(); } } } return 'varchar2(' . ($defaultLength > 0 ? $defaultLength : 255) . ' char)'; } }
/** * Returns a column type according to ScalarField object. * * @param Entity\ScalarField $field Type "source". * * @return string */ public static function getColumnTypeByField(Entity\ScalarField $field) { if ($field instanceof Entity\IntegerField) { return 'int'; } elseif ($field instanceof Entity\FloatField) { return 'float'; } elseif ($field instanceof Entity\DatetimeField) { return 'datetime'; } elseif ($field instanceof Entity\DateField) { return 'date'; } elseif ($field instanceof Entity\TextField) { return 'text'; } elseif ($field instanceof Entity\BooleanField) { $values = $field->getValues(); if (preg_match('/^[0-9]+$/', $values[0]) && preg_match('/^[0-9]+$/', $values[1])) { return 'int'; } else { return 'varchar(' . max(strlen($values[0]), strlen($values[1])) . ')'; } } elseif ($field instanceof Entity\EnumField) { return 'varchar(' . max(array_map('strlen', $field->getValues())) . ')'; } else { // string by default $defaultLength = false; foreach ($field->getValidators() as $validator) { if ($validator instanceof Entity\Validator\Length) { if ($defaultLength === false || $defaultLength > $validator->getMax()) { $defaultLength = $validator->getMax(); } } } return 'varchar(' . ($defaultLength > 0 ? $defaultLength : 255) . ')'; } }