类 yii\db\ColumnSchemaBuilder
ColumnSchemaBuilder 通过 PHP 接口帮助定义数据库模式类型。
查看 yii\db\SchemaBuilderTrait 获取更详细的描述和使用示例。
公共属性
属性 | 类型 | 描述 | 定义于 |
---|---|---|---|
$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 |
公共方法
受保护的方法
方法 | 描述 | 定义于 |
---|---|---|
buildAfterString() | 构建列的 after 约束。默认情况下不支持。 | yii\db\ColumnSchemaBuilder |
buildAppendString() | 构建追加到列定义的自定义字符串。 | yii\db\ColumnSchemaBuilder |
buildCheckString() | 构建列的 check 约束。 | yii\db\ColumnSchemaBuilder |
buildCommentString() | 构建列的注释规范。 | yii\db\ColumnSchemaBuilder |
buildCompleteString() | 从输入格式返回完整的列定义。 | yii\db\ColumnSchemaBuilder |
buildDefaultString() | 构建列的默认值规范。 | yii\db\ColumnSchemaBuilder |
buildDefaultValue() | 返回列的默认值。 | yii\db\ColumnSchemaBuilder |
buildFirstString() | 构建列的 first 约束。默认情况下不支持。 | yii\db\ColumnSchemaBuilder |
buildLengthString() | 构建列的长度/精度部分。 | yii\db\ColumnSchemaBuilder |
buildNotNullString() | 构建列的 not null 约束。 | yii\db\ColumnSchemaBuilder |
buildUniqueString() | 构建列的唯一约束。 | yii\db\ColumnSchemaBuilder |
buildUnsignedString() | 构建列的无符号字符串。默认情况下不支持。 | yii\db\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 |
属性详细信息
列是否为可空。如果为 true
,则添加 NOT NULL
约束。如果为 false
,则添加 NULL
约束。
列值是否无符号。如果为 true
,则添加 UNSIGNED
关键字。
列大小或精度定义。这是在列类型后面括号中的内容。可以是字符串、整数或数组。如果为数组,则数组值将用逗号分隔,并连接为字符串。
抽象列类型(键)到类型类别(值)的映射。
\yii\db\Schema::TYPE_PK => self::CATEGORY_PK,
\yii\db\Schema::TYPE_UPK => self::CATEGORY_PK,
\yii\db\Schema::TYPE_BIGPK => self::CATEGORY_PK,
\yii\db\Schema::TYPE_UBIGPK => self::CATEGORY_PK,
\yii\db\Schema::TYPE_CHAR => self::CATEGORY_STRING,
\yii\db\Schema::TYPE_STRING => self::CATEGORY_STRING,
\yii\db\Schema::TYPE_TEXT => self::CATEGORY_STRING,
\yii\db\Schema::TYPE_TINYINT => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_SMALLINT => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_INTEGER => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_BIGINT => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_FLOAT => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_DOUBLE => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_DECIMAL => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_DATETIME => self::CATEGORY_TIME,
\yii\db\Schema::TYPE_TIMESTAMP => self::CATEGORY_TIME,
\yii\db\Schema::TYPE_TIME => self::CATEGORY_TIME,
\yii\db\Schema::TYPE_DATE => self::CATEGORY_TIME,
\yii\db\Schema::TYPE_BINARY => self::CATEGORY_OTHER,
\yii\db\Schema::TYPE_BOOLEAN => self::CATEGORY_NUMERIC,
\yii\db\Schema::TYPE_MONEY => self::CATEGORY_NUMERIC,
]
方法详情
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()");
}
创建一个列模式构建器实例,提供类型和值精度。
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);
}
定义于: 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);
}
定义于: yii\base\BaseObject::__isset()
检查属性是否已设置,即已定义且不为空。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 `isset($object->property)` 时会被隐式调用。
注意,如果属性未定义,则将返回 false。
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;
}
定义于: 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);
}
}
构建列模式的完整字符串。
public string __toString ( ) |
public function __toString()
{
switch ($this->getTypeCategory()) {
case self::CATEGORY_PK:
$format = '{type}{check}{comment}{append}';
break;
default:
$format = '{type}{length}{notnull}{unique}{default}{check}{comment}{append}';
}
return $this->buildCompleteString($format);
}
定义于: yii\base\BaseObject::__unset()
将对象属性设置为 null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property)
时会隐式调用。
注意,如果属性未定义,此方法不会执行任何操作。如果属性是只读的,它将抛出一个异常。
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
约束。
注意:仅 MySQL、Oracle 和 Cubrid 支持。
public $this after ( $after ) | ||
$after | string |
将要添加的 $this 列之后的列。 |
public function after($after)
{
$this->after = $after;
return $this;
}
指定要追加到列定义的附加 SQL。
位置修饰符将在支持它们的数据库中追加到列定义之后。
public $this append ( $sql ) | ||
$sql | string |
要追加的 SQL 字符串。 |
public function append($sql)
{
$this->append = $sql;
return $this;
}
构建列的 after 约束。默认情况下不支持。
protected string buildAfterString ( ) | ||
返回值 | string |
包含 AFTER 约束的字符串。 |
---|
protected function buildAfterString()
{
return '';
}
构建追加到列定义的自定义字符串。
protected string buildAppendString ( ) | ||
返回值 | string |
要追加的自定义字符串。 |
---|
protected function buildAppendString()
{
return $this->append !== null ? ' ' . $this->append : '';
}
构建列的 check 约束。
protected string buildCheckString ( ) | ||
返回值 | string |
包含 CHECK 约束的字符串。 |
---|
protected function buildCheckString()
{
return $this->check !== null ? " CHECK ({$this->check})" : '';
}
构建列的注释规范。
protected string buildCommentString ( ) | ||
返回值 | string |
包含 COMMENT 关键字和注释本身的字符串 |
---|
protected function buildCommentString()
{
return '';
}
从输入格式返回完整的列定义。
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);
}
构建列的默认值规范。
protected string buildDefaultString ( ) | ||
返回值 | string |
包含列默认值的字符串。 |
---|
protected function buildDefaultString()
{
$defaultValue = $this->buildDefaultValue();
if ($defaultValue === null) {
return '';
}
return ' DEFAULT ' . $defaultValue;
}
返回列的默认值。
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;
}
构建列的 first 约束。默认情况下不支持。
protected string buildFirstString ( ) | ||
返回值 | string |
包含 FIRST 约束的字符串。 |
---|
protected function buildFirstString()
{
return '';
}
构建列的长度/精度部分。
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})";
}
构建列的 not null 约束。
protected string buildNotNullString ( ) | ||
返回值 | string |
如果 $isNotNull 为 true,则返回 'NOT NULL';如果 $isNotNull 为 false,则返回 'NULL';否则返回空字符串。 |
---|
protected function buildNotNullString()
{
if ($this->isNotNull === true) {
return ' NOT NULL';
} elseif ($this->isNotNull === false) {
return ' NULL';
}
return '';
}
构建列的唯一约束。
protected string buildUniqueString ( ) | ||
返回值 | string |
如果 $isUnique 为 true,则返回字符串 'UNIQUE',否则返回空字符串。 |
---|
protected function buildUniqueString()
{
return $this->isUnique ? ' UNIQUE' : '';
}
构建列的无符号字符串。默认情况下不支持。
protected string buildUnsignedString ( ) | ||
返回值 | string |
包含 UNSIGNED 关键字的字符串。 |
---|
protected function buildUnsignedString()
{
return '';
}
定义于: yii\base\BaseObject::canGetProperty()
返回一个值,指示是否可以读取属性。
属性可读,如果
- 类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅 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);
}
定义于: yii\base\BaseObject::canSetProperty()
返回一个值,指示是否可以设置属性。
属性可写,如果
- 类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅 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 $this check ( $check ) | ||
$check | string |
要添加的 |
public function check($check)
{
$this->check = $check;
return $this;
}
::class
。
定义于: yii\base\BaseObject::className()
返回此类的完全限定名称。
public static string className ( ) | ||
返回值 | string |
此类的完全限定名称。 |
---|
public static function className()
{
return get_called_class();
}
指定列的注释。
public $this comment ( $comment ) | ||
$comment | string |
注释 |
public function comment($comment)
{
$this->comment = $comment;
return $this;
}
指定列的默认 SQL 表达式。
public $this defaultExpression ( $default ) | ||
$default | string |
默认值表达式。 |
public function defaultExpression($default)
{
$this->default = new Expression($default);
return $this;
}
指定列的默认值。
public $this defaultValue ( $default ) | ||
$default | mixed |
默认值。 |
public function defaultValue($default)
{
if ($default === null) {
$this->null();
}
$this->default = $default;
return $this;
}
向列添加 FIRST
约束。
注意:仅 MySQL、Oracle 和 Cubrid 支持。
public $this first ( ) |
public function first()
{
$this->isFirst = true;
return $this;
}
public array getCategoryMap ( ) | ||
返回值 | array |
抽象列类型(键)到类型类别(值)的映射。 |
---|
public function getCategoryMap()
{
return static::$typeCategoryMap;
}
返回列类型的类别。
protected string getTypeCategory ( ) | ||
返回值 | string |
包含列类型类别名称的字符串。 |
---|
protected function getTypeCategory()
{
return isset($this->categoryMap[$this->type]) ? $this->categoryMap[$this->type] : null;
}
定义于: 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);
}
定义于: yii\base\BaseObject::hasProperty()
返回一个值,指示是否定义了属性。
属性定义如下
- 类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅
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);
}
public void init ( ) |
public function init()
{
}
向列添加 NOT NULL
约束。
public $this notNull ( ) |
public function notNull()
{
$this->isNotNull = true;
return $this;
}
向列添加 NULL
约束。
public $this null ( ) |
public function null()
{
$this->isNotNull = false;
return $this;
}
public void setCategoryMap ( $categoryMap ) | ||
$categoryMap | array |
抽象列类型(键)到类型类别(值)的映射。 |
public function setCategoryMap($categoryMap)
{
static::$typeCategoryMap = $categoryMap;
}
注册 或 登录 以发表评论。