0 follower

Final Class Yiisoft\Db\Oracle\Column\ColumnFactory

InheritanceYiisoft\Db\Oracle\Column\ColumnFactory » Yiisoft\Db\Schema\Column\AbstractColumnFactory

Constants

Hide inherited constants

Constant Value Description Defined By
DATETIME_REGEX "/^(?:TIMESTAMP|DATE|INTERVAL|to_timestamp(?:_tz)?\\(|to_date\\(|to_dsinterval\\()\\s*'(?:\\d )?([^']+)/" Yiisoft\Db\Oracle\Column\ColumnFactory
TYPE_MAP [ 'char' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'nchar' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'character' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'varchar' => \Yiisoft\Db\Constant\ColumnType::STRING, 'varchar2' => \Yiisoft\Db\Constant\ColumnType::STRING, 'nvarchar2' => \Yiisoft\Db\Constant\ColumnType::STRING, 'clob' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'nclob' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'blob' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'bfile' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'long raw' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'raw' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'number' => \Yiisoft\Db\Constant\ColumnType::DECIMAL, 'binary_float' => \Yiisoft\Db\Constant\ColumnType::FLOAT, 'binary_double' => \Yiisoft\Db\Constant\ColumnType::DOUBLE, 'float' => \Yiisoft\Db\Constant\ColumnType::DOUBLE, 'date' => \Yiisoft\Db\Constant\ColumnType::DATE, 'timestamp' => \Yiisoft\Db\Constant\ColumnType::DATETIME, 'timestamp with time zone' => \Yiisoft\Db\Constant\ColumnType::DATETIMETZ, 'timestamp with local time zone' => \Yiisoft\Db\Constant\ColumnType::DATETIME, 'interval day to second' => \Yiisoft\Db\Constant\ColumnType::STRING, 'interval year to month' => \Yiisoft\Db\Constant\ColumnType::STRING, 'json' => \Yiisoft\Db\Constant\ColumnType::JSON, 'long' => \Yiisoft\Db\Constant\ColumnType::TEXT, ] The mapping from physical column types (keys) to abstract column types (values). Yiisoft\Db\Oracle\Column\ColumnFactory

Method Details

Hide inherited methods

columnDefinitionParser() protected method

protected Yiisoft\Db\Oracle\Column\ColumnDefinitionParser columnDefinitionParser ( )

                protected function columnDefinitionParser(): ColumnDefinitionParser
{
    return new ColumnDefinitionParser();
}

            
fromPseudoType() public method

public \Yiisoft\Db\Schema\Column\ColumnInterface fromPseudoType ( string $pseudoType, array $info = [] )
$pseudoType string
$info array

                public function fromPseudoType(string $pseudoType, array $info = []): ColumnInterface
{
    return parent::fromPseudoType($pseudoType, $info)->unsigned(false);
}

            
getColumnClass() protected method

protected string getColumnClass ( string $type, array $info = [] )
$type string
$info array

                protected function getColumnClass(string $type, array $info = []): string
{
    return match ($type) {
        ColumnType::BINARY => BinaryColumn::class,
        ColumnType::BOOLEAN => BooleanColumn::class,
        ColumnType::DATETIME => DateTimeColumn::class,
        ColumnType::DATETIMETZ => DateTimeColumn::class,
        ColumnType::TIME => DateTimeColumn::class,
        ColumnType::TIMETZ => DateTimeColumn::class,
        ColumnType::DATE => DateTimeColumn::class,
        ColumnType::JSON => JsonColumn::class,
        default => parent::getColumnClass($type, $info),
    };
}

            
getType() protected method

protected string getType ( string $dbType, array $info = [] )
$dbType string
$info array

                protected function getType(string $dbType, array $info = []): string
{
    if ($dbType === 'number') {
        return match ($info['scale'] ?? null) {
            null => ColumnType::DOUBLE,
            0 => ColumnType::INTEGER,
            default => ColumnType::DECIMAL,
        };
    }
    if (isset($info['check'], $info['name'])) {
        if (strcasecmp($info['check'], '"' . $info['name'] . '" is json') === 0) {
            return ColumnType::JSON;
        }
        if (isset($info['size'])
            && $dbType === 'char'
            && $info['size'] === 1
            && strcasecmp($info['check'], '"' . $info['name'] . '" in (0,1)') === 0
        ) {
            return ColumnType::BOOLEAN;
        }
    }
    if ($dbType === 'interval day to second' && isset($info['scale']) && $info['scale'] === 0) {
        return ColumnType::TIME;
    }
    return parent::getType($dbType, $info);
}

            
normalizeNotNullDefaultValue() protected method

protected mixed normalizeNotNullDefaultValue ( string $defaultValue, \Yiisoft\Db\Schema\Column\ColumnInterface $column )
$defaultValue string
$column \Yiisoft\Db\Schema\Column\ColumnInterface

                protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInterface $column): mixed
{
    $value = parent::normalizeNotNullDefaultValue(rtrim($defaultValue), $column);
    if ($column instanceof DateTimeColumn
        && $value instanceof Expression
        && preg_match(self::DATETIME_REGEX, (string) $value, $matches) === 1
    ) {
        return date_create_immutable($matches[1]) !== false
            ? $column->phpTypecast($matches[1])
            : new Expression($matches[1]);
    }
    return $value;
}