0 关注者

类 yii\db\mysql\ColumnSchemaBuilder

继承关系yii\db\mysql\ColumnSchemaBuilder » yii\db\ColumnSchemaBuilder » yii\base\BaseObject
实现yii\base\Configurable
可用版本2.0.8
源代码 https://github.com/yiisoft/yii2/blob/master/framework/db/mysql/ColumnSchemaBuilder.php

ColumnSchemaBuilder 是用于 MySQL 数据库的模式构建器。

公共属性

隐藏继承属性

属性 类型 描述 定义于
$after string 将在其后添加此列的列。 yii\db\ColumnSchemaBuilder
$append mixed 要附加到列模式定义的 SQL 字符串。 yii\db\ColumnSchemaBuilder
$categoryMap array 抽象列类型(键)到类型类别(值)的映射。 yii\db\ColumnSchemaBuilder
$check string 列的CHECK约束。 yii\db\ColumnSchemaBuilder
$comment string 列的注释值。 yii\db\ColumnSchemaBuilder
$db yii\db\Connection 当前数据库连接。 yii\db\ColumnSchemaBuilder
$default mixed 列的默认值。 yii\db\ColumnSchemaBuilder
$isFirst boolean 此列是否要插入到表的开头。 yii\db\ColumnSchemaBuilder
$isNotNull boolean|null 列是否可以为空。 yii\db\ColumnSchemaBuilder
$isUnique boolean 列值是否应唯一。 yii\db\ColumnSchemaBuilder
$isUnsigned boolean 列值是否应为无符号。 yii\db\ColumnSchemaBuilder
$length integer|string|array 列大小或精度定义。 yii\db\ColumnSchemaBuilder
$type string 列类型定义,例如 INTEGER、VARCHAR、DATETIME 等。 yii\db\ColumnSchemaBuilder
$typeCategoryMap array 抽象列类型(键)到类型类别(值)的映射。 yii\db\ColumnSchemaBuilder

受保护属性

隐藏继承属性

属性 类型 描述 定义于

公共方法

隐藏继承方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\BaseObject
__construct() 创建一个列模式构建器实例,给出类型和值精度。 yii\db\ColumnSchemaBuilder
__get() 返回对象属性的值。 yii\base\BaseObject
__isset() 检查属性是否已设置,即已定义且不为空。 yii\base\BaseObject
__set() 设置对象属性的值。 yii\base\BaseObject
__toString() 构建列模式的完整字符串。 yii\db\mysql\ColumnSchemaBuilder
__unset() 将对象属性设置为 null。 yii\base\BaseObject
after() 向列添加AFTER约束。 yii\db\ColumnSchemaBuilder
append() 指定要附加到列定义的额外 SQL。 yii\db\ColumnSchemaBuilder
canGetProperty() 返回一个值,指示属性是否可读。 yii\base\BaseObject
canSetProperty() 返回一个值,指示属性是否可写。 yii\base\BaseObject
check() 为列设置CHECK约束。 yii\db\ColumnSchemaBuilder
className() 返回此类的完全限定名称。 yii\base\BaseObject
comment() 指定列的注释。 yii\db\ColumnSchemaBuilder
defaultExpression() 指定列的默认 SQL 表达式。 yii\db\ColumnSchemaBuilder
defaultValue() 指定列的默认值。 yii\db\ColumnSchemaBuilder
first() 向列添加FIRST约束。 yii\db\ColumnSchemaBuilder
getCategoryMap() yii\db\ColumnSchemaBuilder
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\BaseObject
hasProperty() 返回一个值,指示属性是否已定义。 yii\base\BaseObject
init() 初始化对象。 yii\base\BaseObject
notNull() 向列添加NOT NULL约束。 yii\db\ColumnSchemaBuilder
null() 向列添加NULL约束。 yii\db\ColumnSchemaBuilder
setCategoryMap() yii\db\ColumnSchemaBuilder
unique() 向列添加UNIQUE约束。 yii\db\ColumnSchemaBuilder
unsigned() 将列标记为无符号。 yii\db\ColumnSchemaBuilder

受保护方法

隐藏继承方法

方法 描述 定义于
buildAfterString() 构建列的 after 约束。默认情况下不支持。 yii\db\mysql\ColumnSchemaBuilder
buildAppendString() 构建附加到列定义的自定义字符串。 yii\db\ColumnSchemaBuilder
buildCheckString() 构建列的 check 约束。 yii\db\ColumnSchemaBuilder
buildCommentString() 构建列的注释规范。 yii\db\mysql\ColumnSchemaBuilder
buildCompleteString() 从输入格式返回完整的列定义。 yii\db\ColumnSchemaBuilder
buildDefaultString() 构建列的默认值规范。 yii\db\ColumnSchemaBuilder
buildDefaultValue() 返回列的默认值。 yii\db\ColumnSchemaBuilder
buildFirstString() 构建列的 first 约束。默认情况下不支持。 yii\db\mysql\ColumnSchemaBuilder
buildLengthString() 构建列的长度/精度部分。 yii\db\ColumnSchemaBuilder
buildNotNullString() 构建列的 not null 约束。 yii\db\ColumnSchemaBuilder
buildUniqueString() 构建列的 unique 约束。 yii\db\ColumnSchemaBuilder
buildUnsignedString() 构建列的无符号字符串。默认情况下不支持。 yii\db\mysql\ColumnSchemaBuilder
getTypeCategory() 返回列类型的类别。 yii\db\ColumnSchemaBuilder

常量

隐藏继承常量

常量 描述 定义于
CATEGORY_NUMERIC 'numeric' yii\db\ColumnSchemaBuilder
CATEGORY_OTHER 'other' yii\db\ColumnSchemaBuilder
CATEGORY_PK 'pk' yii\db\ColumnSchemaBuilder
CATEGORY_STRING 'string' yii\db\ColumnSchemaBuilder
CATEGORY_TIME 'time' yii\db\ColumnSchemaBuilder

方法详情

隐藏继承方法

__call() 公共方法

定义于: yii\base\BaseObject::__call()

调用不是类方法的命名方法。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当调用未知方法时会隐式调用它。

public mixed __call ( $name, $params )
$name string

方法名称

$params array

方法参数

返回值 mixed

方法返回值

抛出 yii\base\UnknownMethodException

当调用未知方法时

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() 公共方法

定义于: yii\db\ColumnSchemaBuilder::__construct()

创建一个列模式构建器实例,给出类型和值精度。

public void __construct ( $type, $length null, $db null, $config = [] )
$type string

列的类型。请参阅 $type

$length integer|string|array|null

列的长度或精度。请参阅 $length

$db yii\db\Connection|null

当前的数据库连接。参见 $db

$config array

用于初始化对象属性的键值对。

                public function __construct($type, $length = null, $db = null, $config = [])
{
    $this->type = $type;
    $this->length = $length;
    $this->db = $db;
    parent::__construct($config);
}

            
__get() public method

定义于: yii\base\BaseObject::__get()

返回对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $value = $object->property; 时会隐式调用。

另请参阅 __set()

public mixed __get ( $name )
$name string

属性名

返回值 mixed

属性值

抛出 yii\base\UnknownPropertyException

如果属性未定义

抛出 yii\base\InvalidCallException

如果属性是只写属性

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public method

定义于: yii\base\BaseObject::__isset()

检查属性是否已设置,即已定义且不为空。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 isset($object->property) 时会隐式调用。

请注意,如果属性未定义,将返回 false。

另请参阅 https://php.ac.cn/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

属性名或事件名

返回值 boolean

命名属性是否已设置(非空)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public method

定义于: yii\base\BaseObject::__set()

设置对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $object->property = $value; 时会隐式调用。

另请参阅 __get()

public void __set ( $name, $value )
$name string

属性名或事件名

$value mixed

属性值

抛出 yii\base\UnknownPropertyException

如果属性未定义

抛出 yii\base\InvalidCallException

如果属性是只读属性

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__toString() public method

构建列模式的完整字符串。

public string __toString ( )

                public function __toString()
{
    switch ($this->getTypeCategory()) {
        case self::CATEGORY_PK:
            $format = '{type}{length}{comment}{check}{append}{pos}';
            break;
        case self::CATEGORY_NUMERIC:
            $format = '{type}{length}{unsigned}{notnull}{default}{unique}{comment}{append}{pos}{check}';
            break;
        default:
            $format = '{type}{length}{notnull}{default}{unique}{comment}{append}{pos}{check}';
    }
    return $this->buildCompleteString($format);
}

            
__unset() public method

定义于: yii\base\BaseObject::__unset()

将对象属性设置为 null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 unset($object->property) 时会隐式调用。

请注意,如果属性未定义,此方法将不做任何事情。如果属性是只读属性,它将抛出异常。

另请参阅 https://php.ac.cn/manual/en/function.unset.php

public void __unset ( $name )
$name string

属性名

抛出 yii\base\InvalidCallException

如果属性是只读属性。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
after() public method (available since version 2.0.8)

定义于: yii\db\ColumnSchemaBuilder::after()

向列添加AFTER约束。

注意:仅 MySQL、Oracle 和 Cubrid 支持。

public $this after ( $after )
$after string

要在其后添加 $this 列的列。

                public function after($after)
{
    $this->after = $after;
    return $this;
}

            
append() public method (available since version 2.0.9)

定义于: yii\db\ColumnSchemaBuilder::append()

指定要附加到列定义的额外 SQL。

位置修饰符将在支持它们的数据库中附加在列定义之后。

public $this append ( $sql )
$sql string

要附加的 SQL 字符串。

                public function append($sql)
{
    $this->append = $sql;
    return $this;
}

            
buildAfterString() protected method (available since version 2.0.8)

构建列的 after 约束。默认情况下不支持。

protected string buildAfterString ( )
返回值 string

包含 AFTER 约束的字符串。

                protected function buildAfterString()
{
    return $this->after !== null ?
        ' AFTER ' . $this->db->quoteColumnName($this->after) :
        '';
}

            
buildAppendString() protected method (available since version 2.0.9)

定义于: yii\db\ColumnSchemaBuilder::buildAppendString()

构建附加到列定义的自定义字符串。

protected string buildAppendString ( )
返回值 string

要附加的自定义字符串。

                protected function buildAppendString()
{
    return $this->append !== null ? ' ' . $this->append : '';
}

            
buildCheckString() protected method

定义于: yii\db\ColumnSchemaBuilder::buildCheckString()

构建列的 check 约束。

protected string buildCheckString ( )
返回值 string

包含 CHECK 约束的字符串。

                protected function buildCheckString()
{
    return $this->check !== null ? " CHECK ({$this->check})" : '';
}

            
buildCommentString() protected method (available since version 2.0.8)

构建列的注释规范。

protected string buildCommentString ( )
返回值 string

包含 COMMENT 关键字和注释本身的字符串

                protected function buildCommentString()
{
    return $this->comment !== null ? ' COMMENT ' . $this->db->quoteValue($this->comment) : '';
}

            
buildCompleteString() protected method (available since version 2.0.8)

定义于: yii\db\ColumnSchemaBuilder::buildCompleteString()

从输入格式返回完整的列定义。

protected string buildCompleteString ( $format )
$format string

定义的格式。

返回值 string

包含完整列定义的字符串。

                protected function buildCompleteString($format)
{
    $placeholderValues = [
        '{type}' => $this->type,
        '{length}' => $this->buildLengthString(),
        '{unsigned}' => $this->buildUnsignedString(),
        '{notnull}' => $this->buildNotNullString(),
        '{unique}' => $this->buildUniqueString(),
        '{default}' => $this->buildDefaultString(),
        '{check}' => $this->buildCheckString(),
        '{comment}' => $this->buildCommentString(),
        '{pos}' => $this->isFirst ? $this->buildFirstString() : $this->buildAfterString(),
        '{append}' => $this->buildAppendString(),
    ];
    return strtr($format, $placeholderValues);
}

            
buildDefaultString() protected method

定义于: yii\db\ColumnSchemaBuilder::buildDefaultString()

构建列的默认值规范。

protected string buildDefaultString ( )
返回值 string

包含列默认值的字符串。

                protected function buildDefaultString()
{
    $defaultValue = $this->buildDefaultValue();
    if ($defaultValue === null) {
        return '';
    }
    return ' DEFAULT ' . $defaultValue;
}

            
buildDefaultValue() protected method

定义于: yii\db\ColumnSchemaBuilder::buildDefaultValue()

返回列的默认值。

protected string|null buildDefaultValue ( )
返回值 string|null

包含列默认值的字符串。

                protected function buildDefaultValue()
{
    if ($this->default === null) {
        return $this->isNotNull === false ? 'NULL' : null;
    }
    switch (gettype($this->default)) {
        case 'double':
            // ensure type cast always has . as decimal separator in all locales
            $defaultValue = StringHelper::floatToString($this->default);
            break;
        case 'boolean':
            $defaultValue = $this->default ? 'TRUE' : 'FALSE';
            break;
        case 'integer':
        case 'object':
            $defaultValue = (string) $this->default;
            break;
        default:
            $defaultValue = "'{$this->default}'";
    }
    return $defaultValue;
}

            
buildFirstString() protected method (available since version 2.0.8)

构建列的 first 约束。默认情况下不支持。

protected string buildFirstString ( )
返回值 string

包含 FIRST 约束的字符串。

                protected function buildFirstString()
{
    return $this->isFirst ? ' FIRST' : '';
}

            
buildLengthString() protected method

定义于: yii\db\ColumnSchemaBuilder::buildLengthString()

构建列的长度/精度部分。

protected string buildLengthString ( )

                protected function buildLengthString()
{
    if ($this->length === null || $this->length === []) {
        return '';
    }
    if (is_array($this->length)) {
        $this->length = implode(',', $this->length);
    }
    return "({$this->length})";
}

            
buildNotNullString() protected method

定义于: yii\db\ColumnSchemaBuilder::buildNotNullString()

构建列的 not null 约束。

protected string buildNotNullString ( )
返回值 string

如果 $isNotNull 为真,则返回 'NOT NULL';如果 $isNotNull 为假,则返回 'NULL';否则返回空字符串。

                protected function buildNotNullString()
{
    if ($this->isNotNull === true) {
        return ' NOT NULL';
    } elseif ($this->isNotNull === false) {
        return ' NULL';
    }
    return '';
}

            
buildUniqueString() protected method

定义于: yii\db\ColumnSchemaBuilder::buildUniqueString()

构建列的 unique 约束。

protected string buildUniqueString ( )
返回值 string

如果 $isUnique 为真,则返回字符串 'UNIQUE';否则返回空字符串。

                protected function buildUniqueString()
{
    return $this->isUnique ? ' UNIQUE' : '';
}

            
buildUnsignedString() protected method (available since version 2.0.7)

构建列的无符号字符串。默认情况下不支持。

protected string buildUnsignedString ( )
返回值 string

包含 UNSIGNED 关键字的字符串。

                protected function buildUnsignedString()
{
    return $this->isUnsigned ? ' UNSIGNED' : '';
}

            
canGetProperty() public method

定义于: yii\base\BaseObject::canGetProperty()

返回一个值,指示属性是否可读。

一个属性是可读的,如果

  • 该类有一个与指定名称相关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 该类有一个与指定名称相同的成员变量(当 $checkVars 为真时);

另请参阅 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true )
$name string

属性名

$checkVars boolean

是否将成员变量视为属性

返回值 boolean

该属性是否可读

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public method

定义于: yii\base\BaseObject::canSetProperty()

返回一个值,指示属性是否可写。

一个属性是可写的,如果

  • 该类有一个与指定名称相关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类有一个与指定名称相同的成员变量(当 $checkVars 为真时);

另请参阅 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true )
$name string

属性名

$checkVars boolean

是否将成员变量视为属性

返回值 boolean

该属性是否可写

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
check() public method

定义于: yii\db\ColumnSchemaBuilder::check()

为列设置CHECK约束。

public $this check ( $check )
$check string

要添加的 CHECK 约束的 SQL。

                public function check($check)
{
    $this->check = $check;
    return $this;
}

            
className() public static method
自 2.0.14 版本起已弃用。在 PHP >=5.5 中,请使用 ::class 代替。

定义于: yii\base\BaseObject::className()

返回此类的完全限定名称。

public static string className ( )
返回值 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
comment() public method (available since version 2.0.8)

定义于: yii\db\ColumnSchemaBuilder::comment()

指定列的注释。

public $this comment ( $comment )
$comment string

注释

                public function comment($comment)
{
    $this->comment = $comment;
    return $this;
}

            
defaultExpression() public method (available since version 2.0.7)

定义于: yii\db\ColumnSchemaBuilder::defaultExpression()

指定列的默认 SQL 表达式。

public $this defaultExpression ( $default )
$default string

默认值表达式。

                public function defaultExpression($default)
{
    $this->default = new Expression($default);
    return $this;
}

            
defaultValue() 公共方法

定义于: yii\db\ColumnSchemaBuilder::defaultValue()

指定列的默认值。

public $this defaultValue ( $default )
$default mixed

默认值。

                public function defaultValue($default)
{
    if ($default === null) {
        $this->null();
    }
    $this->default = $default;
    return $this;
}

            
first() 公共方法 (自版本 2.0.8 起可用)

定义于: yii\db\ColumnSchemaBuilder::first()

向列添加FIRST约束。

注意:仅 MySQL、Oracle 和 Cubrid 支持。

public $this first ( )

                public function first()
{
    $this->isFirst = true;
    return $this;
}

            
getCategoryMap() 公共方法 (自版本 2.0.43 起可用)
public array getCategoryMap ( )
返回值 array

抽象列类型(键)到类型类别(值)的映射。

                public function getCategoryMap()
{
    return static::$typeCategoryMap;
}

            
getTypeCategory() 受保护方法 (自版本 2.0.8 起可用)

定义于: yii\db\ColumnSchemaBuilder::getTypeCategory()

返回列类型的类别。

protected string getTypeCategory ( )
返回值 string

包含列类型类别名称的字符串。

                protected function getTypeCategory()
{
    return isset($this->categoryMap[$this->type]) ? $this->categoryMap[$this->type] : null;
}

            
hasMethod() 公共方法

定义于: yii\base\BaseObject::hasMethod()

返回一个值,指示方法是否已定义。

默认实现是调用 php 函数 method_exists()。当您实现 php 魔术方法 __call() 时,您可能需要重写此方法。

public boolean hasMethod ( $name )
$name string

方法名称

返回值 boolean

该方法是否已定义

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() 公共方法

定义于: yii\base\BaseObject::hasProperty()

返回一个值,指示属性是否已定义。

如果属性被定义,则

  • 该类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类有一个与指定名称相同的成员变量(当 $checkVars 为真时);

另见

public boolean hasProperty ( $name, $checkVars true )
$name string

属性名

$checkVars boolean

是否将成员变量视为属性

返回值 boolean

该属性是否已定义

                public function hasProperty($name, $checkVars = true)
{
    return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}

            
init() 公共方法

定义于: yii\base\BaseObject::init()

初始化对象。

此方法在构造函数结束时调用,在对象使用给定配置初始化后调用。

public void init ( )

                public function init()
{
}

            
notNull() 公共方法

定义于: yii\db\ColumnSchemaBuilder::notNull()

向列添加NOT NULL约束。

public $this notNull ( )

                public function notNull()
{
    $this->isNotNull = true;
    return $this;
}

            
null() 公共方法 (自版本 2.0.9 起可用)

定义于: yii\db\ColumnSchemaBuilder::null()

向列添加NULL约束。

public $this null ( )

                public function null()
{
    $this->isNotNull = false;
    return $this;
}

            
setCategoryMap() 公共方法 (自版本 2.0.43 起可用)
public void setCategoryMap ( $categoryMap )
$categoryMap array

抽象列类型(键)到类型类别(值)的映射。

                public function setCategoryMap($categoryMap)
{
    static::$typeCategoryMap = $categoryMap;
}

            
unique() 公共方法

定义于: yii\db\ColumnSchemaBuilder::unique()

向列添加UNIQUE约束。

public $this unique ( )

                public function unique()
{
    $this->isUnique = true;
    return $this;
}

            
unsigned() 公共方法 (自版本 2.0.7 起可用)

定义于: yii\db\ColumnSchemaBuilder::unsigned()

将列标记为无符号。

public $this unsigned ( )

                public function unsigned()
{
    switch ($this->type) {
        case Schema::TYPE_PK:
            $this->type = Schema::TYPE_UPK;
            break;
        case Schema::TYPE_BIGPK:
            $this->type = Schema::TYPE_UBIGPK;
            break;
    }
    $this->isUnsigned = true;
    return $this;
}