0 追蹤者

類別 yii\db\pgsql\Schema

繼承關係yii\db\pgsql\Schema » yii\db\Schema » yii\base\BaseObject
實作介面yii\base\Configurable, yii\db\ConstraintFinderInterface
使用 Traityii\db\ConstraintFinderTrait, yii\db\ViewFinderTrait
自版本起可用2.0
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/db/pgsql/Schema.php

Schema 類別用於從 PostgreSQL 資料庫 (9.x 及以上版本) 檢索中繼資料。

公開屬性

隱藏繼承的屬性

屬性 類型 描述 定義於
$columnQuoteCharacter string|string[] 用於引用資料行名稱的字元。 yii\db\Schema
$columnSchemaClass string|array 資料行結構描述類別或類別配置 yii\db\pgsql\Schema
$db yii\db\Connection 資料庫連線 yii\db\Schema
$defaultSchema string 目前工作階段使用的預設結構描述。 yii\db\pgsql\Schema
$exceptionMap array DB 錯誤與對應例外狀況的對應表。如果在 DB 錯誤訊息中找到左側部分,則使用右側部分的例外狀況類別。 yii\db\Schema
$lastInsertID string 最後插入列的列 ID,或從序列物件檢索的最後一個值。 yii\db\Schema
$queryBuilder yii\db\QueryBuilder 此連線的查詢建構器。 yii\db\Schema
$schemaChecks \yii\db\CheckConstraint[][] 資料庫中所有表格的檢查約束。 yii\db\ConstraintFinderTrait
$schemaDefaultValues yii\db\DefaultValueConstraint[] 資料庫中所有表格的預設值約束。 yii\db\ConstraintFinderTrait
$schemaForeignKeys \yii\db\ForeignKeyConstraint[][] 資料庫中所有表格的外鍵。 yii\db\ConstraintFinderTrait
$schemaIndexes \yii\db\IndexConstraint[][] 資料庫中所有表格的索引。 yii\db\ConstraintFinderTrait
$schemaNames string[] 資料庫中所有結構描述名稱,系統結構描述除外。 yii\db\Schema
$schemaPrimaryKeys yii\db\Constraint[] 資料庫中所有表格的主鍵。 yii\db\ConstraintFinderTrait
$schemaUniques \yii\db\IndexConstraint[][] 資料庫中所有表格的唯一約束。 yii\db\ConstraintFinderTrait
$serverVersion string 伺服器版本,以字串形式表示。 yii\db\Schema
$tableNames string[] 資料庫中所有表格名稱。 yii\db\Schema
$tableQuoteCharacter string|string[] 用於引用結構描述、表格等的字元。 yii\db\pgsql\Schema
$tableSchemas yii\db\TableSchema[] 資料庫中所有表格的中繼資料。 yii\db\Schema
$transactionIsolationLevel string 用於此交易的交易隔離等級。 yii\db\Schema
$typeMap array 從實體資料行類型 (鍵) 到抽象資料行類型 (值) 的對應 yii\db\pgsql\Schema
$viewNames string[] 資料庫中所有檢視表名稱。 yii\db\ViewFinderTrait

受保護屬性

隱藏繼承的屬性

屬性 類型 描述 定義於

公開方法

隱藏繼承的方法

方法 描述 定義於
__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
convertException() 如果可能,將 DB 例外狀況轉換為更具體的例外狀況。 yii\db\Schema
createColumnSchemaBuilder() 建立資料行結構描述建構器實例,並指定類型和值精確度。 yii\db\Schema
createQueryBuilder() 為 PostgreSQL 資料庫建立查詢建構器。 yii\db\pgsql\Schema
createSavepoint() 建立新的儲存點。 yii\db\Schema
findUniqueIndexes() 傳回指定表格的所有唯一索引。 yii\db\pgsql\Schema
getLastInsertID() 傳回最後插入列或序列值的 ID。 yii\db\Schema
getPdoType() 判斷給定 PHP 資料值的 PDO 類型。 yii\db\Schema
getQueryBuilder() yii\db\Schema
getRawTableName() 傳回給定表格名稱的實際名稱。 yii\db\Schema
getSchemaChecks() 傳回資料庫中所有表格的檢查約束。 yii\db\ConstraintFinderTrait
getSchemaDefaultValues() 傳回資料庫中所有表格的預設值約束。 yii\db\ConstraintFinderTrait
getSchemaForeignKeys() 傳回資料庫中所有表格的外鍵。 yii\db\ConstraintFinderTrait
getSchemaIndexes() 傳回資料庫中所有表格的索引。 yii\db\ConstraintFinderTrait
getSchemaNames() 傳回資料庫中所有結構描述名稱,系統結構描述除外。 yii\db\Schema
getSchemaPrimaryKeys() 傳回資料庫中所有表格的主鍵。 yii\db\ConstraintFinderTrait
getSchemaUniques() 傳回資料庫中所有表格的唯一約束。 yii\db\ConstraintFinderTrait
getServerVersion() 傳回伺服器版本,以可透過 \version_compare() 比較的字串形式表示。 yii\db\Schema
getTableChecks() 取得指定表格的檢查約束資訊。 yii\db\ConstraintFinderTrait
getTableDefaultValues() 取得指定表格的預設值約束資訊。 yii\db\ConstraintFinderTrait
getTableForeignKeys() 取得指定表格的外鍵資訊。 yii\db\ConstraintFinderTrait
getTableIndexes() 取得指定表格的索引資訊。 yii\db\ConstraintFinderTrait
getTableNames() 傳回資料庫中所有表格名稱。 yii\db\Schema
getTablePrimaryKey() 取得指定表格的主鍵。 yii\db\ConstraintFinderTrait
getTableSchema() 取得指定表格的中繼資料。 yii\db\Schema
getTableSchemas() 傳回資料庫中所有表格的中繼資料。 yii\db\Schema
getTableUniques() 取得指定表格的唯一約束資訊。 yii\db\ConstraintFinderTrait
getViewNames() 傳回資料庫中所有檢視表名稱。 yii\db\ViewFinderTrait
hasMethod() 傳回一個值,指示是否已定義方法。 yii\base\BaseObject
hasProperty() 傳回一個值,指示是否已定義屬性。 yii\base\BaseObject
init() 初始化物件。 yii\base\BaseObject
insert() 執行 INSERT 指令,傳回主鍵值。 yii\db\pgsql\Schema
isReadQuery() 傳回一個值,指示 SQL 陳述式是否用於讀取目的。 yii\db\Schema
quoteColumnName() 引用資料行名稱以用於查詢中。 yii\db\Schema
quoteSimpleColumnName() 引用簡單資料行名稱以用於查詢中。 yii\db\Schema
quoteSimpleTableName() 引用簡單表格名稱以用於查詢中。 yii\db\Schema
quoteTableName() 引用表格名稱以用於查詢中。 yii\db\Schema
quoteValue() 引用字串值以用於查詢中。 yii\db\Schema
refresh() 重新整理結構描述。 yii\db\Schema
refreshTableSchema() 重新整理特定表格結構描述。 yii\db\Schema
releaseSavepoint() 釋放現有的儲存點。 yii\db\Schema
rollBackSavepoint() 回滾到先前建立的儲存點。 yii\db\Schema
setTransactionIsolationLevel() 設定目前交易的隔離等級。 yii\db\Schema
supportsSavepoint() yii\db\Schema
unquoteSimpleColumnName() 取消引用簡單資料行名稱。 yii\db\Schema
unquoteSimpleTableName() 取消引用簡單表格名稱。 yii\db\Schema

受保護方法

隱藏繼承的方法

方法 描述 定義於
createColumnSchema() 為資料庫建立資料行結構描述。 yii\db\Schema
findColumns() 收集表格資料行的中繼資料。 yii\db\pgsql\Schema
findConstraints() 收集給定表格的外鍵資料行詳細資訊。 yii\db\pgsql\Schema
findSchemaNames() 傳回資料庫中所有結構描述名稱,包括預設結構描述,但不包括系統結構描述。 yii\db\pgsql\Schema
findTableNames() 傳回資料庫中所有表格名稱。 yii\db\pgsql\Schema
findViewNames() {@inheritdoc] yii\db\pgsql\Schema
getCacheKey() 傳回指定表格名稱的快取金鑰。 yii\db\Schema
getCacheTag() 傳回快取標籤名稱。 yii\db\Schema
getColumnPhpType() 從抽象 DB 類型中提取 PHP 類型。 yii\db\Schema
getSchemaMetadata() 傳回給定結構描述中所有表格的給定類型中繼資料。 yii\db\ConstraintFinderTrait
getTableMetadata() 傳回給定表格的給定類型中繼資料。 yii\db\ConstraintFinderTrait
getTableNameParts() 將完整表格名稱分割成多個部分 yii\db\Schema
getUniqueIndexInformation() 取得有關給定表格唯一索引的資訊。 yii\db\pgsql\Schema
loadColumnSchema() 將資料行資訊載入到 yii\db\pgsql\ColumnSchema 物件中。 yii\db\pgsql\Schema
loadTableChecks() yii\db\pgsql\Schema
loadTableDefaultValues() yii\db\pgsql\Schema
loadTableForeignKeys() yii\db\pgsql\Schema
loadTableIndexes() yii\db\pgsql\Schema
loadTablePrimaryKey() yii\db\pgsql\Schema
loadTableSchema() 載入指定表格的中繼資料。 yii\db\pgsql\Schema
loadTableUniques() yii\db\pgsql\Schema
normalizePdoRowKeyCase() 如果 PDO 的陣列鍵大小寫設定為大寫,則將列的陣列鍵大小寫變更為小寫。 yii\db\Schema
resolveTableName() 解析表格名稱和結構描述名稱 (如果有的話)。 yii\db\pgsql\Schema
resolveTableNames() 解析表格名稱和結構描述名稱 (如果有的話)。 yii\db\pgsql\Schema
setTableMetadata() 設定給定表格的給定類型中繼資料。 yii\db\Schema

常數

隱藏繼承的常數

常數 描述 定義於
SCHEMA_CACHE_VERSION 1 結構描述快取版本,用於偵測快取值在快取資料格式變更時的不相容性。 yii\db\Schema
TYPE_BIGINT 'bigint' yii\db\Schema
TYPE_BIGPK 'bigpk' yii\db\Schema
TYPE_BINARY 'binary' yii\db\Schema
TYPE_BOOLEAN 'boolean' yii\db\Schema
TYPE_CHAR 'char' yii\db\Schema
TYPE_DATE 'date' yii\db\Schema
TYPE_DATETIME 'datetime' yii\db\Schema
TYPE_DECIMAL 'decimal' yii\db\Schema
TYPE_DOUBLE 'double' yii\db\Schema
TYPE_FLOAT 'float' yii\db\Schema
TYPE_INTEGER 'integer' yii\db\Schema
TYPE_JSON 'json' yii\db\Schema
TYPE_JSONB 'jsonb' yii\db\pgsql\Schema
TYPE_MONEY 'money' yii\db\Schema
TYPE_PK 'pk' yii\db\Schema
TYPE_SMALLINT 'smallint' yii\db\Schema
TYPE_STRING 'string' yii\db\Schema
TYPE_TEXT 'text' yii\db\Schema
TYPE_TIME 'time' yii\db\Schema
TYPE_TIMESTAMP 'timestamp' yii\db\Schema
TYPE_TINYINT 'tinyint' yii\db\Schema
TYPE_UBIGPK 'ubigpk' yii\db\Schema
TYPE_UPK 'upk' yii\db\Schema

屬性詳細資訊

隱藏繼承的屬性

$columnSchemaClass 公開屬性 (自版本 2.0.11 起可用)

資料行結構描述類別或類別配置

public string|array $columnSchemaClass 'yii\db\pgsql\ColumnSchema'
$defaultSchema 公開屬性

目前工作階段使用的預設結構描述。

public string $defaultSchema 'public'
$tableQuoteCharacter 受保護屬性 (自版本 2.0.14 起可用)

用於引用結構描述、表格等名稱的字元。如果開始和結束字元不同,則可以使用 2 個字元的陣列。

$typeMap 公開屬性

從實體資料行類型 (鍵) 到抽象資料行類型 (值) 的對應

另請參閱 https://postgresql.dev.org.tw/docs/current/datatype.html#DATATYPE-TABLE

public array $typeMap = [
    
'bit' => self::TYPE_INTEGER,
    
'bit varying' => self::TYPE_INTEGER,
    
'varbit' => self::TYPE_INTEGER,
    
'bool' => self::TYPE_BOOLEAN,
    
'boolean' => self::TYPE_BOOLEAN,
    
'box' => self::TYPE_STRING,
    
'circle' => self::TYPE_STRING,
    
'point' => self::TYPE_STRING,
    
'line' => self::TYPE_STRING,
    
'lseg' => self::TYPE_STRING,
    
'polygon' => self::TYPE_STRING,
    
'path' => self::TYPE_STRING,
    
'character' => self::TYPE_CHAR,
    
'char' => self::TYPE_CHAR,
    
'bpchar' => self::TYPE_CHAR,
    
'character varying' => self::TYPE_STRING,
    
'varchar' => self::TYPE_STRING,
    
'text' => self::TYPE_TEXT,
    
'bytea' => self::TYPE_BINARY,
    
'cidr' => self::TYPE_STRING,
    
'inet' => self::TYPE_STRING,
    
'macaddr' => self::TYPE_STRING,
    
'real' => self::TYPE_FLOAT,
    
'float4' => self::TYPE_FLOAT,
    
'double precision' => self::TYPE_DOUBLE,
    
'float8' => self::TYPE_DOUBLE,
    
'decimal' => self::TYPE_DECIMAL,
    
'numeric' => self::TYPE_DECIMAL,
    
'money' => self::TYPE_MONEY,
    
'smallint' => self::TYPE_SMALLINT,
    
'int2' => self::TYPE_SMALLINT,
    
'int4' => self::TYPE_INTEGER,
    
'int' => self::TYPE_INTEGER,
    
'integer' => self::TYPE_INTEGER,
    
'bigint' => self::TYPE_BIGINT,
    
'int8' => self::TYPE_BIGINT,
    
'oid' => self::TYPE_BIGINT,
    
'smallserial' => self::TYPE_SMALLINT,
    
'serial2' => self::TYPE_SMALLINT,
    
'serial4' => self::TYPE_INTEGER,
    
'serial' => self::TYPE_INTEGER,
    
'bigserial' => self::TYPE_BIGINT,
    
'serial8' => self::TYPE_BIGINT,
    
'pg_lsn' => self::TYPE_BIGINT,
    
'date' => self::TYPE_DATE,
    
'interval' => self::TYPE_STRING,
    
'time without time zone' => self::TYPE_TIME,
    
'time' => self::TYPE_TIME,
    
'time with time zone' => self::TYPE_TIME,
    
'timetz' => self::TYPE_TIME,
    
'timestamp without time zone' => self::TYPE_TIMESTAMP,
    
'timestamp' => self::TYPE_TIMESTAMP,
    
'timestamp with time zone' => self::TYPE_TIMESTAMP,
    
'timestamptz' => self::TYPE_TIMESTAMP,
    
'abstime' => self::TYPE_TIMESTAMP,
    
'tsquery' => self::TYPE_STRING,
    
'tsvector' => self::TYPE_STRING,
    
'txid_snapshot' => self::TYPE_STRING,
    
'unknown' => self::TYPE_STRING,
    
'uuid' => self::TYPE_STRING,
    
'json' => self::TYPE_JSON,
    
'jsonb' => self::TYPE_JSON,
    
'xml' => self::TYPE_STRING,
]

方法詳細資訊

隱藏繼承的方法

__call() 公開方法

定義於: yii\base\BaseObject::__call()

呼叫指定的非類別方法。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當呼叫未知方法時,將會隱式呼叫此方法。

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

方法名稱

$params array

方法參數

return mixed

方法傳回值

throws 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

屬性名稱

return mixed

屬性值

throws yii\base\UnknownPropertyException

如果屬性未定義

throws 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.dev.org.tw/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

屬性名稱或事件名稱

return 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

屬性值

throws yii\base\UnknownPropertyException

如果屬性未定義

throws 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.dev.org.tw/manual/en/function.unset.php

public void __unset ( $name )
$name string

屬性名稱

throws 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

是否將成員變數視為屬性

return boolean

屬性是否可讀取

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

            
canSetProperty() public 方法

定義於: yii\base\BaseObject::canSetProperty()

傳回一個值,指示屬性是否可設定。

當符合以下條件時,屬性為可寫入:

  • 類別具有與指定名稱相關聯的 setter 方法(在此情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數 (當 $checkVars 為 true 時);

另請參閱 canGetProperty()

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

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否可寫入

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

            
className() public static 方法
自 2.0.14 版本起已過時。在 PHP >=5.5 版本,請改用 ::class

定義於: yii\base\BaseObject::className()

傳回此類別的完整限定名稱。

public static string className ( )
return string

此類別的完整限定名稱。

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

            
convertException() public 方法

定義於: yii\db\Schema::convertException()

如果可能,將 DB 例外狀況轉換為更具體的例外狀況。

public yii\db\Exception convertException ( Exception $e, $rawSql )
$e 例外
$rawSql string

產生例外的 SQL

                public function convertException(\Exception $e, $rawSql)
{
    if ($e instanceof Exception) {
        return $e;
    }
    $exceptionClass = '\yii\db\Exception';
    foreach ($this->exceptionMap as $error => $class) {
        if (strpos($e->getMessage(), $error) !== false) {
            $exceptionClass = $class;
        }
    }
    $message = $e->getMessage() . "\nThe SQL being executed was: $rawSql";
    $errorInfo = $e instanceof \PDOException ? $e->errorInfo : null;
    return new $exceptionClass($message, $errorInfo, $e->getCode(), $e);
}

            
createColumnSchema() protected 方法

定義於: yii\db\Schema::createColumnSchema()

為資料庫建立資料行結構描述。

子類別可以覆寫此方法,以建立特定 DBMS 的資料行結構描述。

protected yii\db\ColumnSchema createColumnSchema ( )
return yii\db\ColumnSchema

資料行結構描述實例。

throws yii\base\InvalidConfigException

如果無法建立資料行結構描述類別。

                protected function createColumnSchema()
{
    return Yii::createObject($this->columnSchemaClass);
}

            
createColumnSchemaBuilder() public 方法 (自 2.0.6 版本起可用)

定義於: yii\db\Schema::createColumnSchemaBuilder()

建立資料行結構描述建構器實例,並指定類型和值精確度。

子類別可以覆寫此方法,以建立特定 DBMS 的資料行結構描述建構器。

public yii\db\ColumnSchemaBuilder createColumnSchemaBuilder ( $type, $length null )
$type string

資料行類型。請參閱 yii\db\ColumnSchemaBuilder::$type

$length integer|string|array|null

資料行的長度或精確度。請參閱 yii\db\ColumnSchemaBuilder::$length

return yii\db\ColumnSchemaBuilder

資料行結構描述建構器實例

                public function createColumnSchemaBuilder($type, $length = null)
{
    return Yii::createObject(ColumnSchemaBuilder::className(), [$type, $length]);
}

            
createQueryBuilder() public 方法

為 PostgreSQL 資料庫建立查詢建構器。

public yii\db\pgsql\QueryBuilder createQueryBuilder ( )
return yii\db\pgsql\QueryBuilder

查詢建構器實例

                public function createQueryBuilder()
{
    return Yii::createObject(QueryBuilder::className(), [$this->db]);
}

            
createSavepoint() public 方法

定義於: yii\db\Schema::createSavepoint()

建立新的儲存點。

public void createSavepoint ( $name )
$name string

儲存點名稱

                public function createSavepoint($name)
{
    $this->db->createCommand("SAVEPOINT $name")->execute();
}

            
findColumns() protected 方法

收集表格資料行的中繼資料。

protected boolean findColumns ( $table )
$table yii\db\TableSchema

資料表元數據

return boolean

資料表是否存在於資料庫中

                protected function findColumns($table)
{
    $tableName = $this->db->quoteValue($table->name);
    $schemaName = $this->db->quoteValue($table->schemaName);
    $orIdentity = '';
    if (version_compare($this->db->serverVersion, '12.0', '>=')) {
        $orIdentity = 'OR attidentity != \'\'';
    }
    $sql = <<<SQL
CT
d.nspname AS table_schema,
c.relname AS table_name,
a.attname AS column_name,
COALESCE(td.typname, tb.typname, t.typname) AS data_type,
COALESCE(td.typtype, tb.typtype, t.typtype) AS type_type,
(SELECT nspname FROM pg_namespace WHERE oid = COALESCE(td.typnamespace, tb.typnamespace, t.typnamespace)) AS type_scheme,
a.attlen AS character_maximum_length,
pg_catalog.col_description(c.oid, a.attnum) AS column_comment,
a.atttypmod AS modifier,
a.attnotnull = false AS is_nullable,
CAST(pg_get_expr(ad.adbin, ad.adrelid) AS varchar) AS column_default,
coalesce(pg_get_expr(ad.adbin, ad.adrelid) ~ 'nextval',false) {$orIdentity} AS is_autoinc,
pg_get_serial_sequence(quote_ident(d.nspname) || '.' || quote_ident(c.relname), a.attname) AS sequence_name,
CASE WHEN COALESCE(td.typtype, tb.typtype, t.typtype) = 'e'::char
    THEN array_to_string((SELECT array_agg(enumlabel) FROM pg_enum WHERE enumtypid = COALESCE(td.oid, tb.oid, a.atttypid))::varchar[], ',')
    ELSE NULL
END AS enum_values,
CASE atttypid
     WHEN 21 /*int2*/ THEN 16
     WHEN 23 /*int4*/ THEN 32
     WHEN 20 /*int8*/ THEN 64
     WHEN 1700 /*numeric*/ THEN
          CASE WHEN atttypmod = -1
           THEN null
           ELSE ((atttypmod - 4) >> 16) & 65535
           END
     WHEN 700 /*float4*/ THEN 24 /*FLT_MANT_DIG*/
     WHEN 701 /*float8*/ THEN 53 /*DBL_MANT_DIG*/
     ELSE null
  END   AS numeric_precision,
  CASE
    WHEN atttypid IN (21, 23, 20) THEN 0
    WHEN atttypid IN (1700) THEN
    CASE
        WHEN atttypmod = -1 THEN null
        ELSE (atttypmod - 4) & 65535
    END
       ELSE null
  END AS numeric_scale,
CAST(
         information_schema._pg_char_max_length(information_schema._pg_truetypid(a, t), information_schema._pg_truetypmod(a, t))
         AS numeric
) AS size,
a.attnum = any (ct.conkey) as is_pkey,
COALESCE(NULLIF(a.attndims, 0), NULLIF(t.typndims, 0), (t.typcategory='A')::int) AS dimension

pg_class c
LEFT JOIN pg_attribute a ON a.attrelid = c.oid
LEFT JOIN pg_attrdef ad ON a.attrelid = ad.adrelid AND a.attnum = ad.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_type tb ON (a.attndims > 0 OR t.typcategory='A') AND t.typelem > 0 AND t.typelem = tb.oid OR t.typbasetype > 0 AND t.typbasetype = tb.oid
LEFT JOIN pg_type td ON t.typndims > 0 AND t.typbasetype > 0 AND tb.typelem = td.oid
LEFT JOIN pg_namespace d ON d.oid = c.relnamespace
LEFT JOIN pg_constraint ct ON ct.conrelid = c.oid AND ct.contype = 'p'
E
a.attnum > 0 AND t.typname != '' AND NOT a.attisdropped
AND c.relname = {$tableName}
AND d.nspname = {$schemaName}
R BY
a.attnum;

    $columns = $this->db->createCommand($sql)->queryAll();
    if (empty($columns)) {
        return false;
    }
    foreach ($columns as $column) {
        if ($this->db->slavePdo->getAttribute(\PDO::ATTR_CASE) === \PDO::CASE_UPPER) {
            $column = array_change_key_case($column, CASE_LOWER);
        }
        $column = $this->loadColumnSchema($column);
        $table->columns[$column->name] = $column;
        if ($column->isPrimaryKey) {
            $table->primaryKey[] = $column->name;
            if ($table->sequenceName === null) {
                $table->sequenceName = $column->sequenceName;
            }
            $column->defaultValue = null;
        } elseif ($column->defaultValue) {
            if (
                in_array($column->type, [self::TYPE_TIMESTAMP, self::TYPE_DATE, self::TYPE_TIME], true) &&
                in_array(
                    strtoupper($column->defaultValue),
                    ['NOW()', 'CURRENT_TIMESTAMP', 'CURRENT_DATE', 'CURRENT_TIME'],
                    true
                )
            ) {
                $column->defaultValue = new Expression($column->defaultValue);
            } elseif ($column->type === 'boolean') {
                $column->defaultValue = ($column->defaultValue === 'true');
            } elseif (preg_match("/^B'(.*?)'::/", $column->defaultValue, $matches)) {
                $column->defaultValue = bindec($matches[1]);
            } elseif (preg_match("/^'(\d+)'::\"bit\"$/", $column->defaultValue, $matches)) {
                $column->defaultValue = bindec($matches[1]);
            } elseif (preg_match("/^'(.*?)'::/", $column->defaultValue, $matches)) {
                $column->defaultValue = $column->phpTypecast($matches[1]);
            } elseif (preg_match('/^(\()?(.*?)(?(1)\))(?:::.+)?$/', $column->defaultValue, $matches)) {
                if ($matches[2] === 'NULL') {
                    $column->defaultValue = null;
                } else {
                    $column->defaultValue = $column->phpTypecast($matches[2]);
                }
            } else {
                $column->defaultValue = $column->phpTypecast($column->defaultValue);
            }
        }
    }
    return true;
}

            
findConstraints() protected 方法

收集給定表格的外鍵資料行詳細資訊。

protected void findConstraints ( $table )
$table yii\db\TableSchema

資料表元數據

                protected function findConstraints($table)
{
    $tableName = $this->quoteValue($table->name);
    $tableSchema = $this->quoteValue($table->schemaName);
    //We need to extract the constraints de hard way since:
    //https://postgresql.dev.org.tw/message-id/26677.1086673982@sss.pgh.pa.us
    $sql = <<<SQL
ct
ct.conname as constraint_name,
a.attname as column_name,
fc.relname as foreign_table_name,
fns.nspname as foreign_table_schema,
fa.attname as foreign_column_name

(SELECT ct.conname, ct.conrelid, ct.confrelid, ct.conkey, ct.contype, ct.confkey, generate_subscripts(ct.conkey, 1) AS s
   FROM pg_constraint ct
) AS ct
inner join pg_class c on c.oid=ct.conrelid
inner join pg_namespace ns on c.relnamespace=ns.oid
inner join pg_attribute a on a.attrelid=ct.conrelid and a.attnum = ct.conkey[ct.s]
left join pg_class fc on fc.oid=ct.confrelid
left join pg_namespace fns on fc.relnamespace=fns.oid
left join pg_attribute fa on fa.attrelid=ct.confrelid and fa.attnum = ct.confkey[ct.s]
e
ct.contype='f'
and c.relname={$tableName}
and ns.nspname={$tableSchema}
r by
fns.nspname, fc.relname, a.attnum

    $constraints = [];
    foreach ($this->db->createCommand($sql)->queryAll() as $constraint) {
        if ($this->db->slavePdo->getAttribute(\PDO::ATTR_CASE) === \PDO::CASE_UPPER) {
            $constraint = array_change_key_case($constraint, CASE_LOWER);
        }
        if ($constraint['foreign_table_schema'] !== $this->defaultSchema) {
            $foreignTable = $constraint['foreign_table_schema'] . '.' . $constraint['foreign_table_name'];
        } else {
            $foreignTable = $constraint['foreign_table_name'];
        }
        $name = $constraint['constraint_name'];
        if (!isset($constraints[$name])) {
            $constraints[$name] = [
                'tableName' => $foreignTable,
                'columns' => [],
            ];
        }
        $constraints[$name]['columns'][$constraint['column_name']] = $constraint['foreign_column_name'];
    }
    foreach ($constraints as $name => $constraint) {
        $table->foreignKeys[$name] = array_merge([$constraint['tableName']], $constraint['columns']);
    }
}

            
findSchemaNames() protected 方法 (自 2.0.4 版本起可用)

傳回資料庫中所有結構描述名稱,包括預設結構描述,但不包括系統結構描述。

此方法應由子類別覆寫以支援此功能,因為預設實作僅拋出例外。

protected array findSchemaNames ( )
return array

資料庫中所有結構描述名稱,系統結構描述除外。

throws yii\base\NotSupportedException

如果 DBMS 不支援此方法。

                protected function findSchemaNames()
{
    static $sql = <<<'SQL'
CT "ns"."nspname"
 "pg_namespace" AS "ns"
E "ns"."nspname" != 'information_schema' AND "ns"."nspname" NOT LIKE 'pg_%'
R BY "ns"."nspname" ASC

    return $this->db->createCommand($sql)->queryColumn();
}

            
findTableNames() protected 方法

傳回資料庫中所有表格名稱。

此方法應由子類別覆寫以支援此功能,因為預設實作僅拋出例外。

protected array findTableNames ( $schema '' )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述。

return array

資料庫中的所有資料表名稱。名稱不帶有結構描述名稱前綴。

throws yii\base\NotSupportedException

如果 DBMS 不支援此方法。

                protected function findTableNames($schema = '')
{
    if ($schema === '') {
        $schema = $this->defaultSchema;
    }
    $sql = <<<'SQL'
CT c.relname AS table_name
 pg_class c
R JOIN pg_namespace ns ON ns.oid = c.relnamespace
E ns.nspname = :schemaName AND c.relkind IN ('r','v','m','f', 'p')
R BY c.relname

    return $this->db->createCommand($sql, [':schemaName' => $schema])->queryColumn();
}

            
findUniqueIndexes() public 方法

傳回指定表格的所有唯一索引。

每個陣列元素都具有以下結構

[
    'IndexName1' => ['col1' [, ...]],
    'IndexName2' => ['col2' [, ...]],
]
public array findUniqueIndexes ( $table )
$table yii\db\TableSchema

資料表元數據

return array

給定資料表的所有唯一索引。

                public function findUniqueIndexes($table)
{
    $uniqueIndexes = [];
    foreach ($this->getUniqueIndexInformation($table) as $row) {
        if ($this->db->slavePdo->getAttribute(\PDO::ATTR_CASE) === \PDO::CASE_UPPER) {
            $row = array_change_key_case($row, CASE_LOWER);
        }
        $column = $row['columnname'];
        if (strncmp($column, '"', 1) === 0) {
            // postgres will quote names that are not lowercase-only
            // https://github.com/yiisoft/yii2/issues/10613
            $column = substr($column, 1, -1);
        }
        $uniqueIndexes[$row['indexname']][] = $column;
    }
    return $uniqueIndexes;
}

            
findViewNames() protected 方法

{@inheritdoc]

protected void findViewNames ( $schema '' )
$schema

                protected function findViewNames($schema = '')
{
    if ($schema === '') {
        $schema = $this->defaultSchema;
    }
    $sql = <<<'SQL'
CT c.relname AS table_name
 pg_class c
R JOIN pg_namespace ns ON ns.oid = c.relnamespace
E ns.nspname = :schemaName AND (c.relkind = 'v' OR c.relkind = 'm')
R BY c.relname

    return $this->db->createCommand($sql, [':schemaName' => $schema])->queryColumn();
}

            
getCacheKey() protected 方法

定義於: yii\db\Schema::getCacheKey()

傳回指定表格名稱的快取金鑰。

protected mixed getCacheKey ( $name )
$name string

資料表名稱。

return mixed

快取鍵。

                protected function getCacheKey($name)
{
    return [
        __CLASS__,
        $this->db->dsn,
        $this->db->username,
        $this->getRawTableName($name),
    ];
}

            
getCacheTag() protected 方法

定義於: yii\db\Schema::getCacheTag()

傳回快取標籤名稱。

這允許 refresh() 使所有快取的資料表結構描述失效。

protected string getCacheTag ( )
return string

快取標籤名稱

                protected function getCacheTag()
{
    return md5(serialize([
        __CLASS__,
        $this->db->dsn,
        $this->db->username,
    ]));
}

            
getColumnPhpType() protected 方法

定義於: yii\db\Schema::getColumnPhpType()

從抽象 DB 類型中提取 PHP 類型。

protected string getColumnPhpType ( $column )
$column yii\db\ColumnSchema

資料行結構描述資訊

return string

PHP 類型名稱

                protected function getColumnPhpType($column)
{
    static $typeMap = [
        // abstract type => php type
        self::TYPE_TINYINT => 'integer',
        self::TYPE_SMALLINT => 'integer',
        self::TYPE_INTEGER => 'integer',
        self::TYPE_BIGINT => 'integer',
        self::TYPE_BOOLEAN => 'boolean',
        self::TYPE_FLOAT => 'double',
        self::TYPE_DOUBLE => 'double',
        self::TYPE_BINARY => 'resource',
        self::TYPE_JSON => 'array',
    ];
    if (isset($typeMap[$column->type])) {
        if ($column->type === 'bigint') {
            return PHP_INT_SIZE === 8 && !$column->unsigned ? 'integer' : 'string';
        } elseif ($column->type === 'integer') {
            return PHP_INT_SIZE === 4 && $column->unsigned ? 'string' : 'integer';
        }
        return $typeMap[$column->type];
    }
    return 'string';
}

            
getLastInsertID() public 方法

定義於: yii\db\Schema::getLastInsertID()

傳回最後插入列或序列值的 ID。

另請參閱 https://php.dev.org.tw/manual/en/function.PDO-lastInsertId.php

public string getLastInsertID ( $sequenceName '' )
$sequenceName string

序列物件的名稱(某些 DBMS 需要)

return string

最後插入列的列 ID,或從序列物件檢索的最後一個值

throws yii\base\InvalidCallException

如果資料庫連線未啟用

                public function getLastInsertID($sequenceName = '')
{
    if ($this->db->isActive) {
        return $this->db->pdo->lastInsertId($sequenceName === '' ? null : $this->quoteTableName($sequenceName));
    }
    throw new InvalidCallException('DB Connection is not active.');
}

            
getPdoType() public 方法

定義於: yii\db\Schema::getPdoType()

判斷給定 PHP 資料值的 PDO 類型。

另請參閱 https://php.dev.org.tw/manual/en/pdo.constants.php

public integer getPdoType ( $data )
$data mixed

要判斷 PDO 類型的資料

return integer

PDO 類型

                public function getPdoType($data)
{
    static $typeMap = [
        // php type => PDO type
        'boolean' => \PDO::PARAM_BOOL,
        'integer' => \PDO::PARAM_INT,
        'string' => \PDO::PARAM_STR,
        'resource' => \PDO::PARAM_LOB,
        'NULL' => \PDO::PARAM_NULL,
    ];
    $type = gettype($data);
    return isset($typeMap[$type]) ? $typeMap[$type] : \PDO::PARAM_STR;
}

            
getQueryBuilder() public 方法
public yii\db\QueryBuilder getQueryBuilder ( )
return yii\db\QueryBuilder

此連線的查詢建構器。

                public function getQueryBuilder()
{
    if ($this->_builder === null) {
        $this->_builder = $this->createQueryBuilder();
    }
    return $this->_builder;
}

            
getRawTableName() public 方法

定義於: yii\db\Schema::getRawTableName()

傳回給定表格名稱的實際名稱。

此方法將從給定的資料表名稱中去除大括號,並將百分比符號 '%' 替換為 yii\db\Connection::$tablePrefix

public string getRawTableName ( $name )
$name string

要轉換的資料表名稱

return string

給定資料表名稱的真實名稱

                public function getRawTableName($name)
{
    if (strpos($name, '{{') !== false) {
        $name = preg_replace('/\\{\\{(.*?)\\}\\}/', '\1', $name);
        return str_replace('%', $this->db->tablePrefix, $name);
    }
    return $name;
}

            
getSchemaChecks() public 方法

定義於: yii\db\ConstraintFinderTrait::getSchemaChecks()

傳回資料庫中所有表格的檢查約束。

public \yii\db\CheckConstraint[][] getSchemaChecks ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return \yii\db\CheckConstraint[][]

資料庫中所有資料表的檢查約束。每個陣列元素都是 yii\db\CheckConstraint 或其子類別的陣列。

                public function getSchemaChecks($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'checks', $refresh);
}

            
getSchemaDefaultValues() public 方法

定義於: yii\db\ConstraintFinderTrait::getSchemaDefaultValues()

傳回資料庫中所有表格的預設值約束。

public yii\db\DefaultValueConstraint[] getSchemaDefaultValues ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return yii\db\DefaultValueConstraint[]

資料庫中所有資料表的預設值約束。每個陣列元素都是 yii\db\DefaultValueConstraint 或其子類別的陣列。

                public function getSchemaDefaultValues($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'defaultValues', $refresh);
}

            
getSchemaForeignKeys() public 方法

定義於: yii\db\ConstraintFinderTrait::getSchemaForeignKeys()

傳回資料庫中所有表格的外鍵。

public \yii\db\ForeignKeyConstraint[][] getSchemaForeignKeys ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return \yii\db\ForeignKeyConstraint[][]

資料庫中所有資料表的外鍵。每個陣列元素都是 yii\db\ForeignKeyConstraint 或其子類別的陣列。

                public function getSchemaForeignKeys($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'foreignKeys', $refresh);
}

            
getSchemaIndexes() public 方法

定義於: yii\db\ConstraintFinderTrait::getSchemaIndexes()

傳回資料庫中所有表格的索引。

public \yii\db\IndexConstraint[][] getSchemaIndexes ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return \yii\db\IndexConstraint[][]

資料庫中所有資料表的索引。每個陣列元素都是 yii\db\IndexConstraint 或其子類別的陣列。

                public function getSchemaIndexes($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'indexes', $refresh);
}

            
getSchemaMetadata() protected abstract 方法

定義於: yii\db\ConstraintFinderTrait::getSchemaMetadata()

傳回給定結構描述中所有表格的給定類型中繼資料。

protected abstract array getSchemaMetadata ( $schema, $type, $refresh )
$schema string

元數據的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$type string

元數據類型。

$refresh boolean

是否擷取最新的可用資料表元數據。如果為 false,則可能會傳回快取的資料(如果有的話)。

return array

元數據陣列。

                abstract protected function getSchemaMetadata($schema, $type, $refresh);

            
getSchemaNames() public 方法 (自 2.0.4 版本起可用)

定義於: yii\db\Schema::getSchemaNames()

傳回資料庫中所有結構描述名稱,系統結構描述除外。

public string[] getSchemaNames ( $refresh false )
$refresh boolean

是否擷取最新的可用結構描述名稱。如果為 false,則會傳回先前擷取的結構描述名稱(如果有的話)。

return string[]

資料庫中所有結構描述名稱,系統結構描述除外。

                public function getSchemaNames($refresh = false)
{
    if ($this->_schemaNames === null || $refresh) {
        $this->_schemaNames = $this->findSchemaNames();
    }
    return $this->_schemaNames;
}

            
getSchemaPrimaryKeys() public 方法

定義於: yii\db\ConstraintFinderTrait::getSchemaPrimaryKeys()

傳回資料庫中所有表格的主鍵。

public yii\db\Constraint[] getSchemaPrimaryKeys ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return yii\db\Constraint[]

資料庫中所有資料表的主鍵。每個陣列元素都是 yii\db\Constraint 或其子類別的實例。

                public function getSchemaPrimaryKeys($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'primaryKey', $refresh);
}

            
getSchemaUniques() public 方法

Defined in: yii\db\ConstraintFinderTrait::getSchemaUniques()

傳回資料庫中所有表格的唯一約束。

public \yii\db\Constraint[][] getSchemaUniques ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return \yii\db\Constraint[][]

資料庫中所有表格的唯一約束。每個陣列元素都是 yii\db\Constraint 或其子類別的陣列。

                public function getSchemaUniques($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'uniques', $refresh);
}

            
getServerVersion() public method (自 2.0.14 版本起可用)

Defined in: yii\db\Schema::getServerVersion()

傳回伺服器版本,以可透過 \version_compare() 比較的字串形式表示。

public string getServerVersion ( )
return string

伺服器版本,以字串形式表示。

                public function getServerVersion()
{
    if ($this->_serverVersion === null) {
        $this->_serverVersion = $this->db->getSlavePdo(true)->getAttribute(\PDO::ATTR_SERVER_VERSION);
    }
    return $this->_serverVersion;
}

            
getTableChecks() public method

Defined in: yii\db\ConstraintFinderTrait::getTableChecks()

取得指定表格的檢查約束資訊。

public yii\db\CheckConstraint[] getTableChecks ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入資訊,即使在快取中找到也一樣。

return yii\db\CheckConstraint[]

表格檢查約束。

                public function getTableChecks($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'checks', $refresh);
}

            
getTableDefaultValues() public method

Defined in: yii\db\ConstraintFinderTrait::getTableDefaultValues()

取得指定表格的預設值約束資訊。

public yii\db\DefaultValueConstraint[] getTableDefaultValues ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入資訊,即使在快取中找到也一樣。

return yii\db\DefaultValueConstraint[]

表格預設值約束。

                public function getTableDefaultValues($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'defaultValues', $refresh);
}

            
getTableForeignKeys() public method

Defined in: yii\db\ConstraintFinderTrait::getTableForeignKeys()

取得指定表格的外鍵資訊。

public yii\db\ForeignKeyConstraint[] getTableForeignKeys ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入資訊,即使在快取中找到也一樣。

return yii\db\ForeignKeyConstraint[]

表格外鍵。

                public function getTableForeignKeys($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'foreignKeys', $refresh);
}

            
getTableIndexes() public method

Defined in: yii\db\ConstraintFinderTrait::getTableIndexes()

取得指定表格的索引資訊。

public yii\db\IndexConstraint[] getTableIndexes ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入資訊,即使在快取中找到也一樣。

return yii\db\IndexConstraint[]

表格索引。

                public function getTableIndexes($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'indexes', $refresh);
}

            
getTableMetadata() protected abstract method

Defined in: yii\db\ConstraintFinderTrait::getTableMetadata()

傳回給定表格的給定類型中繼資料。

protected abstract mixed getTableMetadata ( $name, $type, $refresh )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$type string

元數據類型。

$refresh boolean

是否重新載入表格元數據,即使在快取中找到也一樣。

return mixed

元數據。

                abstract protected function getTableMetadata($name, $type, $refresh);

            
getTableNameParts() protected method (自 2.0.22 版本起可用)

Defined in: yii\db\Schema::getTableNameParts()

將完整表格名稱分割成多個部分

protected array getTableNameParts ( $name )
$name string

                protected function getTableNameParts($name)
{
    return explode('.', $name);
}

            
getTableNames() public method

Defined in: yii\db\Schema::getTableNames()

傳回資料庫中所有表格名稱。

public string[] getTableNames ( $schema '', $refresh false )
$schema string

表格的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。如果非空,則傳回的表格名稱將會加上結構描述名稱作為前綴。

$refresh boolean

是否擷取最新的可用表格名稱。如果為 false,則會傳回先前擷取的表格名稱(如果有的話)。

return string[]

資料庫中所有表格名稱。

                public function getTableNames($schema = '', $refresh = false)
{
    if (!isset($this->_tableNames[$schema]) || $refresh) {
        $this->_tableNames[$schema] = $this->findTableNames($schema);
    }
    return $this->_tableNames[$schema];
}

            
getTablePrimaryKey() public method

Defined in: yii\db\ConstraintFinderTrait::getTablePrimaryKey()

取得指定表格的主鍵。

public yii\db\Constraint|null getTablePrimaryKey ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入資訊,即使在快取中找到也一樣。

return yii\db\Constraint|null

表格主鍵,如果表格沒有主鍵則為 null

                public function getTablePrimaryKey($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'primaryKey', $refresh);
}

            
getTableSchema() public method

Defined in: yii\db\Schema::getTableSchema()

取得指定表格的中繼資料。

public yii\db\TableSchema|null getTableSchema ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入表格結構描述,即使在快取中找到也一樣。

return yii\db\TableSchema|null

表格元數據。如果指定的表格不存在則為 null

                public function getTableSchema($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'schema', $refresh);
}

            
getTableSchemas() public method

Defined in: yii\db\Schema::getTableSchemas()

傳回資料庫中所有表格的中繼資料。

public yii\db\TableSchema[] getTableSchemas ( $schema '', $refresh false )
$schema string

資料表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。

$refresh boolean

是否擷取最新的可用資料表結構描述。如果為 false,則可能會傳回快取的資料(如果有的話)。

return yii\db\TableSchema[]

資料庫中所有表格的元數據。每個陣列元素都是 yii\db\TableSchema 或其子類別的實例。

                public function getTableSchemas($schema = '', $refresh = false)
{
    return $this->getSchemaMetadata($schema, 'schema', $refresh);
}

            
getTableUniques() public method

Defined in: yii\db\ConstraintFinderTrait::getTableUniques()

取得指定表格的唯一約束資訊。

public yii\db\Constraint[] getTableUniques ( $name, $refresh false )
$name string

表格名稱。表格名稱可以包含結構描述名稱(如果有的話)。請勿引用表格名稱。

$refresh boolean

是否重新載入資訊,即使在快取中找到也一樣。

return yii\db\Constraint[]

表格唯一約束。

                public function getTableUniques($name, $refresh = false)
{
    return $this->getTableMetadata($name, 'uniques', $refresh);
}

            
getUniqueIndexInformation() protected method

取得有關給定表格唯一索引的資訊。

protected array getUniqueIndexInformation ( $table )
$table yii\db\TableSchema

資料表元數據

return array

包含索引和資料行名稱

                protected function getUniqueIndexInformation($table)
{
    $sql = <<<'SQL'
CT
i.relname as indexname,
pg_get_indexdef(idx.indexrelid, k + 1, TRUE) AS columnname
 (
LECT *, generate_subscripts(indkey, 1) AS k
OM pg_index
x
R JOIN pg_class i ON i.oid = idx.indexrelid
R JOIN pg_class c ON c.oid = idx.indrelid
R JOIN pg_namespace ns ON c.relnamespace = ns.oid
E idx.indisprimary = FALSE AND idx.indisunique = TRUE
c.relname = :tableName AND ns.nspname = :schemaName
R BY i.relname, k

    return $this->db->createCommand($sql, [
        ':schemaName' => $table->schemaName,
        ':tableName' => $table->name,
    ])->queryAll();
}

            
getViewNames() public method

Defined in: yii\db\ViewFinderTrait::getViewNames()

傳回資料庫中所有檢視表名稱。

public string[] getViewNames ( $schema '', $refresh false )
$schema string

檢視表的結構描述。預設為空字串,表示目前的或預設的結構描述名稱。如果非空,則傳回的檢視表名稱將會加上結構描述名稱作為前綴。

$refresh boolean

是否擷取最新的可用檢視表名稱。如果為 false,則會傳回先前擷取的檢視表名稱(如果有的話)。

return string[]

資料庫中所有檢視表名稱。

                public function getViewNames($schema = '', $refresh = false)
{
    if (!isset($this->_viewNames[$schema]) || $refresh) {
        $this->_viewNames[$schema] = $this->findViewNames($schema);
    }
    return $this->_viewNames[$schema];
}

            
hasMethod() public method

Defined in: yii\base\BaseObject::hasMethod()

傳回一個值,指示是否已定義方法。

預設實作是對 php 函數 method_exists() 的呼叫。當您實作 php 魔術方法 __call() 時,您可以覆寫此方法。

public boolean hasMethod ( $name )
$name string

方法名稱

return boolean

方法是否已定義

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

            
hasProperty() public method

Defined in: yii\base\BaseObject::hasProperty()

傳回一個值,指示是否已定義屬性。

如果符合以下條件,則屬性已定義

  • 類別具有與指定名稱相關聯的 getter 或 setter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數 (當 $checkVars 為 true 時);

另請參閱

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

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否已定義

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

            
init() public method

Defined in: yii\base\BaseObject::init()

初始化物件。

在物件使用給定的組態初始化之後,此方法會在建構函式的結尾被調用。

public void init ( )

                public function init()
{
}

            
insert() public method (自 2.0.4 版本起可用)

執行 INSERT 指令,傳回主鍵值。

public array|false insert ( $table, $columns )
$table string

新資料列將插入的表格。

$columns array

要插入表格的資料行資料 (名稱 => 值)。

return array|false

主鍵值,如果命令失敗則為 false

                public function insert($table, $columns)
{
    $params = [];
    $sql = $this->db->getQueryBuilder()->insert($table, $columns, $params);
    $returnColumns = $this->getTableSchema($table)->primaryKey;
    if (!empty($returnColumns)) {
        $returning = [];
        foreach ((array) $returnColumns as $name) {
            $returning[] = $this->quoteColumnName($name);
        }
        $sql .= ' RETURNING ' . implode(', ', $returning);
    }
    $command = $this->db->createCommand($sql, $params);
    $command->prepare(false);
    $result = $command->queryOne();
    return !$command->pdoStatement->rowCount() ? false : $result;
}

            
isReadQuery() public method

Defined in: yii\db\Schema::isReadQuery()

傳回一個值,指示 SQL 陳述式是否用於讀取目的。

public boolean isReadQuery ( $sql )
$sql string

SQL 陳述式

return boolean

SQL 陳述式是否用於讀取目的。

                public function isReadQuery($sql)
{
    $pattern = '/^\s*(SELECT|SHOW|DESCRIBE)\b/i';
    return preg_match($pattern, $sql) > 0;
}

            
loadColumnSchema() protected method

將資料行資訊載入到 yii\db\pgsql\ColumnSchema 物件中。

protected yii\db\pgsql\ColumnSchema loadColumnSchema ( $info )
$info array

資料行資訊

return yii\db\pgsql\ColumnSchema

資料行結構描述物件

                protected function loadColumnSchema($info)
{
    /** @var ColumnSchema $column */
    $column = $this->createColumnSchema();
    $column->allowNull = $info['is_nullable'];
    $column->autoIncrement = $info['is_autoinc'];
    $column->comment = $info['column_comment'];
    if ($info['type_scheme'] !== null && !in_array($info['type_scheme'], [$this->defaultSchema, 'pg_catalog'], true)) {
        $column->dbType = $info['type_scheme'] . '.' . $info['data_type'];
    } else {
        $column->dbType = $info['data_type'];
    }
    $column->defaultValue = $info['column_default'];
    $column->enumValues = ($info['enum_values'] !== null) ? explode(',', str_replace(["''"], ["'"], $info['enum_values'])) : null;
    $column->unsigned = false; // has no meaning in PG
    $column->isPrimaryKey = $info['is_pkey'];
    $column->name = $info['column_name'];
    $column->precision = $info['numeric_precision'];
    $column->scale = $info['numeric_scale'];
    $column->size = $info['size'] === null ? null : (int) $info['size'];
    $column->dimension = (int) $info['dimension'];
    // pg_get_serial_sequence() doesn't track DEFAULT value change. GENERATED BY IDENTITY columns always have null default value
    if (isset($column->defaultValue) && preg_match("/nextval\\('\"?\\w+\"?\.?\"?\\w+\"?'(::regclass)?\\)/", $column->defaultValue) === 1) {
        $column->sequenceName = preg_replace(['/nextval/', '/::/', '/regclass/', '/\'\)/', '/\(\'/'], '', $column->defaultValue);
    } elseif (isset($info['sequence_name'])) {
        $column->sequenceName = $this->resolveTableName($info['sequence_name'])->fullName;
    }
    if (isset($this->typeMap[$column->dbType])) {
        $column->type = $this->typeMap[$column->dbType];
    } else {
        $column->type = self::TYPE_STRING;
    }
    $column->phpType = $this->getColumnPhpType($column);
    return $column;
}

            
loadTableChecks() protected method

protected void loadTableChecks ( $tableName )
$tableName

                protected function loadTableChecks($tableName)
{
    return $this->loadTableConstraints($tableName, 'checks');
}

            
loadTableDefaultValues() protected method

protected void loadTableDefaultValues ( $tableName )
$tableName
throws yii\base\NotSupportedException

如果呼叫此方法。

                protected function loadTableDefaultValues($tableName)
{
    throw new NotSupportedException('PostgreSQL does not support default value constraints.');
}

            
loadTableForeignKeys() protected method

protected void loadTableForeignKeys ( $tableName )
$tableName

                protected function loadTableForeignKeys($tableName)
{
    return $this->loadTableConstraints($tableName, 'foreignKeys');
}

            
loadTableIndexes() protected method

protected void loadTableIndexes ( $tableName )
$tableName

                protected function loadTableIndexes($tableName)
{
    static $sql = <<<'SQL'
CT
"ic"."relname" AS "name",
"ia"."attname" AS "column_name",
"i"."indisunique" AS "index_is_unique",
"i"."indisprimary" AS "index_is_primary"
 "pg_class" AS "tc"
R JOIN "pg_namespace" AS "tcns"
ON "tcns"."oid" = "tc"."relnamespace"
R JOIN "pg_index" AS "i"
ON "i"."indrelid" = "tc"."oid"
R JOIN "pg_class" AS "ic"
ON "ic"."oid" = "i"."indexrelid"
R JOIN "pg_attribute" AS "ia"
ON "ia"."attrelid" = "i"."indexrelid"
E "tcns"."nspname" = :schemaName AND "tc"."relname" = :tableName
R BY "ia"."attnum" ASC

    $resolvedName = $this->resolveTableName($tableName);
    $indexes = $this->db->createCommand($sql, [
        ':schemaName' => $resolvedName->schemaName,
        ':tableName' => $resolvedName->name,
    ])->queryAll();
    $indexes = $this->normalizePdoRowKeyCase($indexes, true);
    $indexes = ArrayHelper::index($indexes, null, 'name');
    $result = [];
    foreach ($indexes as $name => $index) {
        $result[] = new IndexConstraint([
            'isPrimary' => (bool) $index[0]['index_is_primary'],
            'isUnique' => (bool) $index[0]['index_is_unique'],
            'name' => $name,
            'columnNames' => ArrayHelper::getColumn($index, 'column_name'),
        ]);
    }
    return $result;
}

            
loadTablePrimaryKey() protected method

protected void loadTablePrimaryKey ( $tableName )
$tableName

                protected function loadTablePrimaryKey($tableName)
{
    return $this->loadTableConstraints($tableName, 'primaryKey');
}

            
loadTableSchema() protected method

載入指定表格的中繼資料。

protected yii\db\TableSchema|null loadTableSchema ( $name )
$name string

表格名稱

return yii\db\TableSchema|null

與 DBMS 相關的表格元數據,如果表格不存在則為 null

                protected function loadTableSchema($name)
{
    $table = new TableSchema();
    $this->resolveTableNames($table, $name);
    if ($this->findColumns($table)) {
        $this->findConstraints($table);
        return $table;
    }
    return null;
}

            
loadTableUniques() protected method

protected void loadTableUniques ( $tableName )
$tableName

                protected function loadTableUniques($tableName)
{
    return $this->loadTableConstraints($tableName, 'uniques');
}

            
normalizePdoRowKeyCase() protected method (自 2.0.13 版本起可用)

Defined in: yii\db\Schema::normalizePdoRowKeyCase()

如果 PDO 的陣列鍵大小寫設定為大寫,則將列的陣列鍵大小寫變更為小寫。

protected array normalizePdoRowKeyCase ( array $row, $multiple )
$row array

資料列陣列或資料列陣列的陣列。

$multiple boolean

是否傳遞多個資料列或單個資料列。

return array

標準化的資料列或資料列。

                protected function normalizePdoRowKeyCase(array $row, $multiple)
{
    if ($this->db->getSlavePdo(true)->getAttribute(\PDO::ATTR_CASE) !== \PDO::CASE_UPPER) {
        return $row;
    }
    if ($multiple) {
        return array_map(function (array $row) {
            return array_change_key_case($row, CASE_LOWER);
        }, $row);
    }
    return array_change_key_case($row, CASE_LOWER);
}

            
quoteColumnName() public method

Defined in: yii\db\Schema::quoteColumnName()

引用資料行名稱以用於查詢中。

如果資料行名稱包含前綴,前綴也會被正確地引用。如果資料行名稱已經被引用,或者包含 '('、'[[' 或 '{{',則此方法將不會執行任何操作。

另請參閱 quoteSimpleColumnName()

public string quoteColumnName ( $name )
$name string

資料行名稱

return string

正確引用的資料行名稱

                public function quoteColumnName($name)
{
    if (strpos($name, '(') !== false || strpos($name, '[[') !== false) {
        return $name;
    }
    if (($pos = strrpos($name, '.')) !== false) {
        $prefix = $this->quoteTableName(substr($name, 0, $pos)) . '.';
        $name = substr($name, $pos + 1);
    } else {
        $prefix = '';
    }
    if (strpos($name, '{{') !== false) {
        return $name;
    }
    return $prefix . $this->quoteSimpleColumnName($name);
}

            
quoteSimpleColumnName() public method

Defined in: yii\db\Schema::quoteSimpleColumnName()

引用簡單資料行名稱以用於查詢中。

簡單資料行名稱應僅包含資料行名稱,不帶任何前綴。如果資料行名稱已經被引用,或是星號字元 '*',則此方法將不會執行任何操作。

public string quoteSimpleColumnName ( $name )
$name string

資料行名稱

return string

正確引用的資料行名稱

                public function quoteSimpleColumnName($name)
{
    if (is_string($this->columnQuoteCharacter)) {
        $startingCharacter = $endingCharacter = $this->columnQuoteCharacter;
    } else {
        list($startingCharacter, $endingCharacter) = $this->columnQuoteCharacter;
    }
    return $name === '*' || strpos($name, $startingCharacter) !== false ? $name : $startingCharacter . $name . $endingCharacter;
}

            
quoteSimpleTableName() public method

Defined in: yii\db\Schema::quoteSimpleTableName()

引用簡單表格名稱以用於查詢中。

簡單表格名稱應僅包含表格名稱,不帶任何結構描述前綴。如果表格名稱已經被引用,則此方法將不會執行任何操作。

public string quoteSimpleTableName ( $name )
$name string

表格名稱

return string

正確引用的表格名稱

                public function quoteSimpleTableName($name)
{
    if (is_string($this->tableQuoteCharacter)) {
        $startingCharacter = $endingCharacter = $this->tableQuoteCharacter;
    } else {
        list($startingCharacter, $endingCharacter) = $this->tableQuoteCharacter;
    }
    return strpos($name, $startingCharacter) !== false ? $name : $startingCharacter . $name . $endingCharacter;
}

            
quoteTableName() public method

Defined in: yii\db\Schema::quoteTableName()

引用表格名稱以用於查詢中。

如果表格名稱包含結構描述前綴,前綴也會被正確地引用。如果表格名稱已經被引用,或者包含 '(' 或 '{{',則此方法將不會執行任何操作。

另請參閱 quoteSimpleTableName()

public string quoteTableName ( $name )
$name string

表格名稱

return string

正確引用的表格名稱

                public function quoteTableName($name)
{
    if (strncmp($name, '(', 1) === 0 && strpos($name, ')') === strlen($name) - 1) {
        return $name;
    }
    if (strpos($name, '{{') !== false) {
        return $name;
    }
    if (strpos($name, '.') === false) {
        return $this->quoteSimpleTableName($name);
    }
    $parts = $this->getTableNameParts($name);
    foreach ($parts as $i => $part) {
        $parts[$i] = $this->quoteSimpleTableName($part);
    }
    return implode('.', $parts);
}

            
quoteValue() public method

Defined in: yii\db\Schema::quoteValue()

引用字串值以用於查詢中。

請注意,如果參數不是字串,它將會不經更改地傳回。

另請參閱 https://php.dev.org.tw/manual/en/function.PDO-quote.php

public string quoteValue ( $str )
$str string

要引用的字串

return string

正確引用的字串

                public function quoteValue($str)
{
    if (!is_string($str)) {
        return $str;
    }
    if (mb_stripos((string)$this->db->dsn, 'odbc:') === false && ($value = $this->db->getSlavePdo(true)->quote($str)) !== false) {
        return $value;
    }
    // the driver doesn't support quote (e.g. oci)
    return "'" . addcslashes(str_replace("'", "''", $str), "\000\n\r\\\032") . "'";
}

            
refresh() public method

Defined in: yii\db\Schema::refresh()

重新整理結構描述。

此方法會清除所有快取的表格結構描述,以便稍後可以重新建立它們,以反映資料庫結構描述的變更。

public void refresh ( )

                public function refresh()
{
    /* @var $cache CacheInterface */
    $cache = is_string($this->db->schemaCache) ? Yii::$app->get($this->db->schemaCache, false) : $this->db->schemaCache;
    if ($this->db->enableSchemaCache && $cache instanceof CacheInterface) {
        TagDependency::invalidate($cache, $this->getCacheTag());
    }
    $this->_tableNames = [];
    $this->_tableMetadata = [];
}

            
refreshTableSchema() public method (自 2.0.6 版本起可用)

Defined in: yii\db\Schema::refreshTableSchema()

重新整理特定表格結構描述。

這個方法會清除快取的資料表結構描述,以便稍後重新建立,以反映資料庫結構描述的變更。

public void refreshTableSchema ( $name )
$name string

資料表名稱。

                public function refreshTableSchema($name)
{
    $rawName = $this->getRawTableName($name);
    unset($this->_tableMetadata[$rawName]);
    $this->_tableNames = [];
    /* @var $cache CacheInterface */
    $cache = is_string($this->db->schemaCache) ? Yii::$app->get($this->db->schemaCache, false) : $this->db->schemaCache;
    if ($this->db->enableSchemaCache && $cache instanceof CacheInterface) {
        $cache->delete($this->getCacheKey($rawName));
    }
}

            
releaseSavepoint() 公開方法

定義於: yii\db\Schema::releaseSavepoint()

釋放現有的儲存點。

public void releaseSavepoint ( $name )
$name string

儲存點名稱

                public function releaseSavepoint($name)
{
    $this->db->createCommand("RELEASE SAVEPOINT $name")->execute();
}

            
resolveTableName() 受保護方法 (自版本 2.0.13 起可用)

解析表格名稱和結構描述名稱 (如果有的話)。

protected yii\db\TableSchema resolveTableName ( $name )
$name string

資料表名稱

return yii\db\TableSchema

具有已解析的資料表、結構描述等名稱的 yii\db\TableSchema

throws yii\base\NotSupportedException

如果 DBMS 不支援此方法。

                protected function resolveTableName($name)
{
    $resolvedName = new TableSchema();
    $parts = explode('.', str_replace('"', '', $name));
    if (isset($parts[1])) {
        $resolvedName->schemaName = $parts[0];
        $resolvedName->name = $parts[1];
    } else {
        $resolvedName->schemaName = $this->defaultSchema;
        $resolvedName->name = $name;
    }
    $resolvedName->fullName = ($resolvedName->schemaName !== $this->defaultSchema ? $resolvedName->schemaName . '.' : '') . $resolvedName->name;
    return $resolvedName;
}

            
resolveTableNames() 受保護方法

解析表格名稱和結構描述名稱 (如果有的話)。

protected void resolveTableNames ( $table, $name )
$table yii\db\TableSchema

資料表 metadata 物件

$name string

資料表名稱

                protected function resolveTableNames($table, $name)
{
    $parts = explode('.', str_replace('"', '', $name));
    if (isset($parts[1])) {
        $table->schemaName = $parts[0];
        $table->name = $parts[1];
    } else {
        $table->schemaName = $this->defaultSchema;
        $table->name = $parts[0];
    }
    $table->fullName = $table->schemaName !== $this->defaultSchema ? $table->schemaName . '.' . $table->name : $table->name;
}

            
rollBackSavepoint() 公開方法

定義於: yii\db\Schema::rollBackSavepoint()

回滾到先前建立的儲存點。

public void rollBackSavepoint ( $name )
$name string

儲存點名稱

                public function rollBackSavepoint($name)
{
    $this->db->createCommand("ROLLBACK TO SAVEPOINT $name")->execute();
}

            
setTableMetadata() 受保護方法 (自版本 2.0.13 起可用)

定義於: yii\db\Schema::setTableMetadata()

設定給定表格的給定類型中繼資料。

protected void setTableMetadata ( $name, $type, $data )
$name string

資料表名稱。

$type string

元數據類型。

$data mixed

元數據。

                protected function setTableMetadata($name, $type, $data)
{
    $this->_tableMetadata[$this->getRawTableName($name)][$type] = $data;
}

            
setTransactionIsolationLevel() 公開方法
public void setTransactionIsolationLevel ( $level )
$level string

此交易要使用的交易隔離等級。這可以是 yii\db\Transaction::READ_UNCOMMITTEDyii\db\Transaction::READ_COMMITTEDyii\db\Transaction::REPEATABLE_READyii\db\Transaction::SERIALIZABLE 其中之一,也可以是包含 DBMS 特定語法的字串,用於 SET TRANSACTION ISOLATION LEVEL 之後。

                public function setTransactionIsolationLevel($level)
{
    $this->db->createCommand("SET TRANSACTION ISOLATION LEVEL $level")->execute();
}

            
supportsSavepoint() 公開方法
public boolean supportsSavepoint ( )
return boolean

此 DBMS 是否支援 savepoint

                public function supportsSavepoint()
{
    return $this->db->enableSavepoint;
}

            
unquoteSimpleColumnName() 公開方法 (自版本 2.0.14 起可用)

定義於: yii\db\Schema::unquoteSimpleColumnName()

取消引用簡單資料行名稱。

簡單的資料行名稱應僅包含資料行名稱,不含任何前綴。如果資料行名稱未加上引號或是星號字元 '*',則此方法不會執行任何動作。

public string unquoteSimpleColumnName ( $name )
$name string

資料行名稱。

return string

未加引號的資料行名稱。

                public function unquoteSimpleColumnName($name)
{
    if (is_string($this->columnQuoteCharacter)) {
        $startingCharacter = $this->columnQuoteCharacter;
    } else {
        $startingCharacter = $this->columnQuoteCharacter[0];
    }
    return strpos($name, $startingCharacter) === false ? $name : substr($name, 1, -1);
}

            
unquoteSimpleTableName() 公開方法 (自版本 2.0.14 起可用)

定義於: yii\db\Schema::unquoteSimpleTableName()

取消引用簡單表格名稱。

簡單的資料表名稱應僅包含資料表名稱,不含任何結構描述前綴。如果資料表名稱未加上引號,則此方法不會執行任何動作。

public string unquoteSimpleTableName ( $name )
$name string

資料表名稱。

return string

未加引號的資料表名稱。

                public function unquoteSimpleTableName($name)
{
    if (is_string($this->tableQuoteCharacter)) {
        $startingCharacter = $this->tableQuoteCharacter;
    } else {
        $startingCharacter = $this->tableQuoteCharacter[0];
    }
    return strpos($name, $startingCharacter) === false ? $name : substr($name, 1, -1);
}