0 关注者

类 yii\db\TableSchema

继承关系yii\db\TableSchema » yii\base\BaseObject
实现接口yii\base\Configurable
子类yii\db\mssql\TableSchema
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/db/TableSchema.php

TableSchema 表示数据库表的元数据。

公有属性

隐藏继承属性

属性 类型 描述 定义于
$columnNames array 列名列表。 yii\db\TableSchema
$columns yii\db\ColumnSchema[] 该表的列元数据。 yii\db\TableSchema
$foreignKeys array 该表的外部键。 yii\db\TableSchema
$fullName string 该表的完整名称,包括模式名称前缀(如果有)。 yii\db\TableSchema
$name string 该表的名称。 yii\db\TableSchema
$primaryKey string[] 该表的主键。 yii\db\TableSchema
$schemaName string 该表所属的模式名称。 yii\db\TableSchema
$sequenceName string|null 主键的序列名称。 yii\db\TableSchema

公有方法

隐藏继承方法

方法 描述 定义于
__call() 调用非类方法的命名方法。 yii\base\BaseObject
__construct() 构造函数。 yii\base\BaseObject
__get() 返回对象属性的值。 yii\base\BaseObject
__isset() 检查属性是否已设置,即已定义且不为 null。 yii\base\BaseObject
__set() 设置对象属性的值。 yii\base\BaseObject
__unset() 将对象属性设置为 null。 yii\base\BaseObject
canGetProperty() 返回一个值,指示属性是否可读。 yii\base\BaseObject
canSetProperty() 返回一个值,指示属性是否可写。 yii\base\BaseObject
className() 返回此类的完全限定名称。 yii\base\BaseObject
fixPrimaryKey() 手动指定此表的主键。 yii\db\TableSchema
getColumn() 获取命名列的元数据。 yii\db\TableSchema
getColumnNames() 返回此表中所有列的名称。 yii\db\TableSchema
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\BaseObject
hasProperty() 返回一个值,指示属性是否已定义。 yii\base\BaseObject
init() 初始化对象。 yii\base\BaseObject

属性详情

隐藏继承属性

$columnNames 公有属性

列名列表。

public array $columnNames null
$columns 公有属性

该表的列元数据。每个数组元素都是一个 yii\db\ColumnSchema 对象,索引为列名。

$foreignKeys 公有属性

该表的外部键。每个数组元素都具有以下结构

[
 'ForeignTableName',
 'fk1' => 'pk1',  // pk1 is in foreign table
 'fk2' => 'pk2',  // if composite foreign key
]
public array $foreignKeys = []
$fullName 公有属性

该表的完整名称,包括模式名称前缀(如果有)。请注意,如果模式名称与 默认模式名称 相同,则不会包含模式名称。

public string $fullName null
$name 公有属性

该表的名称。不包含模式名称。使用 $fullName 获取包含模式名称前缀的名称。

public string $name null
$primaryKey 公共属性

该表的主键。

public string[] $primaryKey = []
$schemaName 公共属性

该表所属的模式名称。

public string $schemaName null
$sequenceName 公共属性

主键的序列名称。如果无序列则为 null。

public string|null $sequenceName null

方法详情

隐藏继承方法

__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\base\BaseObject::__construct()

构造函数。

默认实现执行两件事

  • 使用给定的配置 $config 初始化对象。
  • 调用 init()

如果此方法在子类中被重写,建议

  • 构造函数的最后一个参数是一个配置数组,就像这里的 $config 一样。
  • 在构造函数的末尾调用父类的实现。
public void __construct ( $config = [] )
$config array

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

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

定义于: 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() 公共方法

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

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

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

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

另见 https://php.ac.cn/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

属性名或事件名

返回值 boolean

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

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

            
__set() 公共方法

定义于: 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);
    }
}

            
__unset() 公共方法

定义于: 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);
    }
}

            
canGetProperty() 公共方法

定义于: 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);
}

            
canSetProperty() 公共方法

定义于: 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);
}

            
className() 公共静态方法
自 2.0.14 版起已弃用。在 PHP >=5.5 中,请改用 ::class

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

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

public static string className ( )
返回值 string

此类的完全限定名称。

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

            
fixPrimaryKey() 公共方法

手动指定此表的主键。

public void fixPrimaryKey ( $keys )
$keys string|array

主键(可以是复合主键)

抛出异常 yii\base\InvalidArgumentException

如果在表中找不到指定的键。

                public function fixPrimaryKey($keys)
{
    $keys = (array) $keys;
    $this->primaryKey = $keys;
    foreach ($this->columns as $column) {
        $column->isPrimaryKey = false;
    }
    foreach ($keys as $key) {
        if (isset($this->columns[$key])) {
            $this->columns[$key]->isPrimaryKey = true;
        } else {
            throw new InvalidArgumentException("Primary key '$key' cannot be found in table '{$this->name}'.");
        }
    }
}

            
getColumn() 公共方法

获取命名列的元数据。

这是一种方便的方法,用于检索命名列,即使它不存在。

public yii\db\ColumnSchema|null getColumn ( $name )
$name string

列名

返回值 yii\db\ColumnSchema|null

命名列的元数据。如果命名列不存在,则为 null。

                public function getColumn($name)
{
    return isset($this->columns[$name]) ? $this->columns[$name] : null;
}

            
getColumnNames() 公共方法

返回此表中所有列的名称。

public array getColumnNames ( )
返回值 array

列名列表

                public function getColumnNames()
{
    return array_keys($this->columns);
}

            
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 为 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);
}

            
init() 公共方法

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

初始化对象。

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

public void init ( )

                public function init()
{
}