Final Class Yiisoft\Db\Oracle\Column\ColumnFactory
| Inheritance | Yiisoft\Db\Oracle\Column\ColumnFactory » Yiisoft\Db\Schema\Column\AbstractColumnFactory |
|---|
Public Methods
| Method | Description | Defined By |
|---|---|---|
| fromPseudoType() | Yiisoft\Db\Oracle\Column\ColumnFactory |
Protected Methods
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
| protected Yiisoft\Db\Oracle\Column\ColumnDefinitionParser columnDefinitionParser ( ) |
protected function columnDefinitionParser(): ColumnDefinitionParser
{
return new ColumnDefinitionParser();
}
| 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);
}
| 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),
};
}
| 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);
}
| 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;
}
Signup or Login in order to comment.