Final Class Yiisoft\Db\Oracle\Column\ColumnFactory
| Inheritance | Yiisoft\ |
|---|
Public Methods
| Method | Description | Defined By |
|---|---|---|
| fromPseudoType() | Yiisoft\ |
Protected Methods
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| DATETIME_REGEX | "/^(?:TIMESTAMP|DATE|INTERVAL|to_timestamp(?:_tz)?\\(|to_date\\(|to_dsinterval\\()\\ |
Yiisoft\ |
|
| 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' => \ |
The mapping from physical column types (keys) to abstract column types (values). | Yiisoft\ |
Method Details
| protected Yiisoft\ |
protected function columnDefinitionParser(): ColumnDefinitionParser
{
return new ColumnDefinitionParser();
}
| public \ | ||
| $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, \ | ||
| $defaultValue | string | |
| $column | \ |
|
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;
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.