Final Class Yiisoft\Db\Mysql\Column\ColumnFactory
| Inheritance | Yiisoft\Db\Mysql\Column\ColumnFactory » Yiisoft\Db\Schema\Column\AbstractColumnFactory |
|---|
Protected Methods
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| TYPE_MAP | [ 'bit' => \Yiisoft\Db\Constant\ColumnType::BIT, 'tinyint' => \Yiisoft\Db\Constant\ColumnType::TINYINT, 'smallint' => \Yiisoft\Db\Constant\ColumnType::SMALLINT, 'mediumint' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'int' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'integer' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'bigint' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'float' => \Yiisoft\Db\Constant\ColumnType::FLOAT, 'real' => \Yiisoft\Db\Constant\ColumnType::FLOAT, 'double' => \Yiisoft\Db\Constant\ColumnType::DOUBLE, 'decimal' => \Yiisoft\Db\Constant\ColumnType::DECIMAL, 'numeric' => \Yiisoft\Db\Constant\ColumnType::DECIMAL, 'char' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'varchar' => \Yiisoft\Db\Constant\ColumnType::STRING, 'enum' => \Yiisoft\Db\Constant\ColumnType::STRING, 'tinytext' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'mediumtext' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'longtext' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'text' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'binary' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'varbinary' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'blob' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'tinyblob' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'mediumblob' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'longblob' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'year' => \Yiisoft\Db\Constant\ColumnType::SMALLINT, 'timestamp' => \Yiisoft\Db\Constant\ColumnType::TIMESTAMP, 'datetime' => \Yiisoft\Db\Constant\ColumnType::DATETIME, 'time' => \Yiisoft\Db\Constant\ColumnType::TIME, 'date' => \Yiisoft\Db\Constant\ColumnType::DATE, 'json' => \Yiisoft\Db\Constant\ColumnType::JSON, ] | Mapping from physical column types (keys) to abstract column types (values). | Yiisoft\Db\Mysql\Column\ColumnFactory |
Method Details
| protected columnDefinitionParser( ): Yiisoft\Db\Mysql\Column\ColumnDefinitionParser |
protected function columnDefinitionParser(): ColumnDefinitionParser
{
return new ColumnDefinitionParser();
}
| protected getColumnClass( string $type, array $info = [] ): string | ||
| $type | string | |
| $info | array | |
protected function getColumnClass(string $type, array $info = []): string
{
return match ($type) {
ColumnType::CHAR => StringColumn::class,
ColumnType::STRING => StringColumn::class,
ColumnType::TEXT => StringColumn::class,
ColumnType::UUID => StringColumn::class,
ColumnType::TIMESTAMP => DateTimeColumn::class,
ColumnType::DATETIME => DateTimeColumn::class,
ColumnType::DATETIMETZ => DateTimeColumn::class,
ColumnType::TIME => DateTimeColumn::class,
ColumnType::TIMETZ => DateTimeColumn::class,
ColumnType::DATE => DateTimeColumn::class,
ColumnType::DECIMAL => StringColumn::class,
default => parent::getColumnClass($type, $info),
};
}
| protected getType( string $dbType, array $info = [] ): string | ||
| $dbType | string | |
| $info | array | |
protected function getType(string $dbType, array $info = []): string
{
if ($dbType === 'bit' && isset($info['size']) && $info['size'] === 1) {
return ColumnType::BOOLEAN;
}
return parent::getType($dbType, $info);
}
| protected normalizeDefaultValue( string|null $defaultValue, \Yiisoft\Db\Schema\Column\ColumnInterface $column ): mixed | ||
| $defaultValue | string|null | |
| $column | \Yiisoft\Db\Schema\Column\ColumnInterface | |
protected function normalizeDefaultValue(?string $defaultValue, ColumnInterface $column): mixed
{
if (
$defaultValue === null
|| $column->isPrimaryKey()
|| $column->isComputed()
) {
return null;
}
return $this->normalizeNotNullDefaultValue($defaultValue, $column);
}
| protected normalizeNotNullDefaultValue( string $defaultValue, \Yiisoft\Db\Schema\Column\ColumnInterface $column ): mixed | ||
| $defaultValue | string | |
| $column | \Yiisoft\Db\Schema\Column\ColumnInterface | |
protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInterface $column): mixed
{
if ($defaultValue === '') {
return $column->phpTypecast($defaultValue);
}
if (
in_array($column->getType(), [ColumnType::TIMESTAMP, ColumnType::DATETIME, ColumnType::DATE, ColumnType::TIME], true)
&& preg_match('/^current_timestamp(?:\((\d*)\))?$/i', $defaultValue, $matches) === 1
) {
return new Expression('CURRENT_TIMESTAMP' . (!empty($matches[1]) ? '(' . $matches[1] . ')' : ''));
}
if (!empty($column->getExtra())
|| $defaultValue[0] === '('
&& !in_array($column->getType(), [ColumnType::CHAR, ColumnType::STRING, ColumnType::TEXT, ColumnType::BINARY], true)
) {
return new Expression($defaultValue);
}
if ($defaultValue[0] === "'" && $defaultValue[-1] === "'") {
$value = substr($defaultValue, 1, -1);
$value = str_replace("''", "'", $value);
return $column->phpTypecast($value);
}
if (
str_starts_with($defaultValue, "b'")
&& in_array($column->getType(), [ColumnType::BOOLEAN, ColumnType::BIT], true)
) {
return $column->phpTypecast(bindec(substr($defaultValue, 2, -1)));
}
return $column->phpTypecast($defaultValue);
}
Signup or Login in order to comment.