0 follower

Final Class Yiisoft\Db\Pgsql\Column\ColumnFactory

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

Constants

Hide inherited constants

Constant Value Description Defined By
TYPE_MAP [ 'bool' => \Yiisoft\Db\Constant\ColumnType::BOOLEAN, 'boolean' => \Yiisoft\Db\Constant\ColumnType::BOOLEAN, 'bit' => \Yiisoft\Db\Constant\ColumnType::BIT, 'bit varying' => \Yiisoft\Db\Constant\ColumnType::BIT, 'varbit' => \Yiisoft\Db\Constant\ColumnType::BIT, 'smallint' => \Yiisoft\Db\Constant\ColumnType::SMALLINT, 'int2' => \Yiisoft\Db\Constant\ColumnType::SMALLINT, 'smallserial' => \Yiisoft\Db\Constant\ColumnType::SMALLINT, 'serial2' => \Yiisoft\Db\Constant\ColumnType::SMALLINT, 'int4' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'int' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'integer' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'serial' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'serial4' => \Yiisoft\Db\Constant\ColumnType::INTEGER, 'bigint' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'int8' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'bigserial' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'serial8' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'oid' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'pg_lsn' => \Yiisoft\Db\Constant\ColumnType::BIGINT, 'real' => \Yiisoft\Db\Constant\ColumnType::FLOAT, 'float4' => \Yiisoft\Db\Constant\ColumnType::FLOAT, 'float8' => \Yiisoft\Db\Constant\ColumnType::DOUBLE, 'double precision' => \Yiisoft\Db\Constant\ColumnType::DOUBLE, 'decimal' => \Yiisoft\Db\Constant\ColumnType::DECIMAL, 'numeric' => \Yiisoft\Db\Constant\ColumnType::DECIMAL, 'money' => \Yiisoft\Db\Constant\ColumnType::MONEY, 'char' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'character' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'bpchar' => \Yiisoft\Db\Constant\ColumnType::CHAR, 'character varying' => \Yiisoft\Db\Constant\ColumnType::STRING, 'varchar' => \Yiisoft\Db\Constant\ColumnType::STRING, 'text' => \Yiisoft\Db\Constant\ColumnType::TEXT, 'bytea' => \Yiisoft\Db\Constant\ColumnType::BINARY, 'abstime' => \Yiisoft\Db\Constant\ColumnType::DATETIME, 'timestamp' => \Yiisoft\Db\Constant\ColumnType::DATETIME, 'timestamp without time zone' => \Yiisoft\Db\Constant\ColumnType::DATETIME, 'timestamp with time zone' => \Yiisoft\Db\Constant\ColumnType::DATETIMETZ, 'timestamptz' => \Yiisoft\Db\Constant\ColumnType::DATETIMETZ, 'time' => \Yiisoft\Db\Constant\ColumnType::TIME, 'time without time zone' => \Yiisoft\Db\Constant\ColumnType::TIME, 'time with time zone' => \Yiisoft\Db\Constant\ColumnType::TIMETZ, 'timetz' => \Yiisoft\Db\Constant\ColumnType::TIMETZ, 'date' => \Yiisoft\Db\Constant\ColumnType::DATE, 'interval' => \Yiisoft\Db\Constant\ColumnType::STRING, 'box' => \Yiisoft\Db\Constant\ColumnType::STRING, 'circle' => \Yiisoft\Db\Constant\ColumnType::STRING, 'point' => \Yiisoft\Db\Constant\ColumnType::STRING, 'line' => \Yiisoft\Db\Constant\ColumnType::STRING, 'lseg' => \Yiisoft\Db\Constant\ColumnType::STRING, 'polygon' => \Yiisoft\Db\Constant\ColumnType::STRING, 'path' => \Yiisoft\Db\Constant\ColumnType::STRING, 'cidr' => \Yiisoft\Db\Constant\ColumnType::STRING, 'inet' => \Yiisoft\Db\Constant\ColumnType::STRING, 'macaddr' => \Yiisoft\Db\Constant\ColumnType::STRING, 'macaddr8' => \Yiisoft\Db\Constant\ColumnType::STRING, 'tsquery' => \Yiisoft\Db\Constant\ColumnType::STRING, 'tsvector' => \Yiisoft\Db\Constant\ColumnType::STRING, 'txid_snapshot' => \Yiisoft\Db\Constant\ColumnType::STRING, 'unknown' => \Yiisoft\Db\Constant\ColumnType::STRING, 'uuid' => \Yiisoft\Db\Constant\ColumnType::STRING, 'xml' => \Yiisoft\Db\Constant\ColumnType::STRING, 'json' => \Yiisoft\Db\Constant\ColumnType::JSON, 'jsonb' => \Yiisoft\Db\Constant\ColumnType::JSON, 'int4range' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::INT4RANGE, 'int8range' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::INT8RANGE, 'numrange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::NUMRANGE, 'tsrange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::TSRANGE, 'tstzrange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::TSTZRANGE, 'daterange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::DATERANGE, 'int4multirange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::INT4MULTIRANGE, 'int8multirange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::INT8MULTIRANGE, 'nummultirange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::NUMMULTIRANGE, 'tsmultirange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::TSMULTIRANGE, 'tstzmultirange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::TSTZMULTIRANGE, 'datemultirange' => \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::DATEMULTIRANGE, ] The mapping from physical column types (keys) to abstract column types (values). Yiisoft\Db\Pgsql\Column\ColumnFactory

Method Details

Hide inherited methods

columnDefinitionParser() protected method

protected Yiisoft\Db\Pgsql\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
{
    // PostgreSQL doesn't support unsigned types
    return parent::fromPseudoType($pseudoType, $info)->unsigned(false);
}

            
fromType() public method

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

                public function fromType(string $type, array $info = []): ColumnInterface
{
    $column = parent::fromType($type, $info);
    if ($column instanceof StructuredColumn) {
        $this->initializeStructuredDefaultValue($column);
    }
    return $column;
}

            
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::BOOLEAN => BooleanColumn::class,
        ColumnType::BIT => BitColumnInternal::className($info['size'] ?? null),
        ColumnType::TINYINT => IntegerColumn::class,
        ColumnType::SMALLINT => IntegerColumn::class,
        ColumnType::INTEGER => IntegerColumn::class,
        ColumnType::BIGINT => PHP_INT_SIZE !== 8
            ? BigIntColumn::class
            : IntegerColumn::class,
        ColumnType::BINARY => BinaryColumn::class,
        ColumnType::ARRAY => ArrayColumn::class,
        ColumnType::STRUCTURED => StructuredColumn::class,
        PgsqlColumnType::INT4RANGE => Int4RangeColumn::class,
        PgsqlColumnType::INT8RANGE => Int8RangeColumn::class,
        PgsqlColumnType::NUMRANGE => NumRangeColumn::class,
        PgsqlColumnType::TSRANGE => TsRangeColumn::class,
        PgsqlColumnType::TSTZRANGE => TsTzRangeColumn::class,
        PgsqlColumnType::DATERANGE => DateRangeColumn::class,
        PgsqlColumnType::INT4MULTIRANGE => Int4MultiRangeColumn::class,
        PgsqlColumnType::INT8MULTIRANGE => Int8MultiRangeColumn::class,
        PgsqlColumnType::NUMMULTIRANGE => NumMultiRangeColumn::class,
        PgsqlColumnType::TSMULTIRANGE => TsMultiRangeColumn::class,
        PgsqlColumnType::TSTZMULTIRANGE => TsTzMultiRangeColumn::class,
        PgsqlColumnType::DATEMULTIRANGE => DateMultiRangeColumn::class,
        default => parent::getColumnClass($type, $info),
    };
}

            
isType() protected method

protected boolean isType ( string $type )
$type string

                protected function isType(string $type): bool
{
    return match ($type) {
        PgsqlColumnType::INT4RANGE,
        PgsqlColumnType::INT8RANGE,
        PgsqlColumnType::NUMRANGE,
        PgsqlColumnType::TSRANGE,
        PgsqlColumnType::TSTZRANGE,
        PgsqlColumnType::DATERANGE,
        PgsqlColumnType::INT4MULTIRANGE,
        PgsqlColumnType::INT8MULTIRANGE,
        PgsqlColumnType::NUMMULTIRANGE,
        PgsqlColumnType::TSMULTIRANGE,
        PgsqlColumnType::TSTZMULTIRANGE,
        PgsqlColumnType::DATEMULTIRANGE => true,
        default => parent::isType($type),
    };
}

            
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
{
    /** @var string $value */
    $value = preg_replace("/::[^:']+$/", '$1', $defaultValue);
    if (str_starts_with($value, "B'") && $value[-1] === "'") {
        return $column->phpTypecast(substr($value, 2, -1));
    }
    $value = parent::normalizeNotNullDefaultValue($value, $column);
    if ($value instanceof Expression) {
        return new Expression($defaultValue);
    }
    return $value;
}