0 follower

クラス yii\db\pgsql\Schema

継承yii\db\pgsql\Schema » yii\db\Schema » yii\base\BaseObject
実装yii\base\Configurable, yii\db\ConstraintFinderInterface
トレイトの使用yii\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 public プロパティ (バージョン 2.0.11 から利用可能)

列スキーマクラスまたはクラス設定

public string|array $columnSchemaClass 'yii\db\pgsql\ColumnSchema'
$defaultSchema public プロパティ

現在のセッションで使用されるデフォルトスキーマ。

public string $defaultSchema 'public'
$tableQuoteCharacter protected プロパティ (バージョン 2.0.14 から利用可能)

スキーマ、テーブルなどの名前を引用符で囲むために使用される文字。開始文字と終了文字が異なる場合は、2文字の配列を使用できます。

$typeMap public プロパティ

物理的な列の種類(キー)から抽象的な列の種類(値)へのマッピング

こちらも参照してください https://www.postgresql.org/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() public メソッド

定義場所: 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() public メソッド

定義場所: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つのことを行います。

  • 指定された設定$configを使用してオブジェクトを初期化します。
  • init() を呼び出します。

このメソッドを子クラスでオーバーライドする場合は、

  • コンストラクタの最後のパラメータが、ここで示すように$configのような設定配列であることをお勧めします。
  • コンストラクタの最後に親の実装を呼び出してください。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

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

            
__get() public メソッド

定義場所: 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メソッド

定義位置: yii\base\BaseObject::__isset()

プロパティが設定されているかどうか(つまり、定義されていてnullではないかどうか)を確認します。

これはPHPのマジックメソッドであり、`isset($object->property)`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

プロパティが定義されていない場合、falseが返されることに注意してください。

こちらも参照してください https://www.php.net/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() publicメソッド

定義位置: 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() publicメソッド

定義位置: yii\base\BaseObject::__unset()

オブジェクトプロパティをnullに設定します。

これはPHPのマジックメソッドであり、`unset($object->property)`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

プロパティが定義されていない場合、このメソッドは何もしません。プロパティが読み取り専用の場合、例外がスローされます。

こちらも参照してください https://www.php.net/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() publicメソッド

定義位置: yii\base\BaseObject::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティは、以下の場合に読み取り可能です。

  • クラスに、指定された名前と関連付けられたゲッターメソッドがある場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合(`$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() publicメソッド

定義位置: yii\base\BaseObject::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティは、以下の場合に書き込み可能です。

  • クラスに、指定された名前と関連付けられたセッターメソッドがある場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合(`$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() public staticメソッド
2.0.14以降非推奨。PHP >= 5.5では、代わりに`::class`を使用してください。

定義位置: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
戻り値 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 Exception
$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 ( )
戻り値 yii\db\ColumnSchema

列スキーマインスタンス。

例外 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を参照してください。

戻り値 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 ( )
戻り値 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

テーブルメタデータ

戻り値 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://www.postgresql.org/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 ( )
戻り値 array

システムスキーマを除く、データベース内のすべてのスキーマ名。

例外 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

テーブルのスキーマ。デフォルトは空文字列で、現在のまたはデフォルトのスキーマを意味します。

戻り値 array

データベース内のすべてのテーブル名。名前にはスキーマ名プレフィックスがありません。

例外 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

テーブルメタデータ

戻り値 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

テーブル名。

戻り値 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 ( )
戻り値 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

列スキーマ情報

戻り値 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://www.php.net/manual/en/function.PDO-lastInsertId.php.

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

シーケンスオブジェクトの名前(一部のDBMSで必要)

戻り値 string

最後に挿入された行の行ID、またはシーケンスオブジェクトから取得された最後の値

例外 yii\base\InvalidCallException

DB接続がアクティブでない場合

                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://www.php.net/manual/en/pdo.constants.php.

public integer getPdoType ( $data )
$data mixed

PDO型を決定するデータ

戻り値 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 メソッド

定義されている場所: yii\db\Schema::getQueryBuilder()

public yii\db\QueryBuilder getQueryBuilder ( )
戻り値 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

変換するテーブル名

戻り値 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の場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 \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の場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 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の場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 \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の場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 \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の場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 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の場合、以前にフェッチされたスキーマ名(利用可能な場合)が返されます。

戻り値 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の場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 yii\db\Constraint[]

データベース内のすべてのテーブルに対する主キー。各配列要素は、yii\db\Constraintまたはその子クラスのインスタンスです。

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

            
getSchemaUniques() public メソッド

定義位置: yii\db\ConstraintFinderTrait::getSchemaUniques()

データベース内のすべてテーブルの一意制約を返します。

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

テーブルのスキーマ。デフォルトは空文字列で、現在のスキーマ名またはデフォルトのスキーマ名を意味します。

$refresh boolean

最新のテーブルスキーマを取得するかどうか。これがfalseの場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 \yii\db\Constraint[][]

データベース内のすべてのテーブルに対する一意制約。各配列要素は、yii\db\Constraintまたはその子クラスの配列です。

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

            
getServerVersion() public メソッド (バージョン 2.0.14 から利用可能)

定義位置: yii\db\Schema::getServerVersion()

\version_compare()で比較可能な文字列としてサーバーバージョンを返します。

public string getServerVersion ( )
戻り値 string

文字列としてのサーバーバージョン。

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

            
getTableChecks() public メソッド

定義位置: yii\db\ConstraintFinderTrait::getTableChecks()

指定されたテーブルのチェック制約情報を取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュ内に見つかった場合でも情報を再読み込みするかどうか。

戻り値 yii\db\CheckConstraint[]

テーブルのチェック制約。

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

            
getTableDefaultValues() publicメソッド

定義位置: yii\db\ConstraintFinderTrait::getTableDefaultValues()

指定されたテーブルのデフォルト値制約情報を取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュ内に見つかった場合でも情報を再読み込みするかどうか。

戻り値 yii\db\DefaultValueConstraint[]

テーブルのデフォルト値制約。

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

            
getTableForeignKeys() publicメソッド

定義位置: yii\db\ConstraintFinderTrait::getTableForeignKeys()

指定されたテーブルの外部キー情報を取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュ内に見つかった場合でも情報を再読み込みするかどうか。

戻り値 yii\db\ForeignKeyConstraint[]

テーブルの外部キー。

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

            
getTableIndexes() publicメソッド

定義位置: yii\db\ConstraintFinderTrait::getTableIndexes()

指定されたテーブルのインデックス情報を取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュ内に見つかった場合でも情報を再読み込みするかどうか。

戻り値 yii\db\IndexConstraint[]

テーブルのインデックス。

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

            
getTableMetadata() protected abstractメソッド

定義位置: yii\db\ConstraintFinderTrait::getTableMetadata()

指定されたテーブルについて、指定された型のメタデータを返します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$type string

メタデータの種類。

$refresh boolean

キャッシュにテーブルメタデータが存在する場合でも、メタデータを再読み込みするかどうか。

戻り値 mixed

メタデータ。

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

            
getTableNameParts() protectedメソッド (バージョン2.0.22から利用可能)

定義位置: yii\db\Schema::getTableNameParts()

完全なテーブル名を複数の部分に分割します。

protected array getTableNameParts ( $name )
$name string

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

            
getTableNames() publicメソッド

定義位置: yii\db\Schema::getTableNames()

データベース内のすべてのテーブル名を返します。

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

テーブルのスキーマ。デフォルトは空文字列で、現在のまたはデフォルトのスキーマ名を意味します。空でない場合、返されるテーブル名にはスキーマ名が接頭辞として付加されます。

$refresh boolean

最新の利用可能なテーブル名をフェッチするかどうか。これがfalseの場合、以前にフェッチされたテーブル名(存在する場合)が返されます。

戻り値 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メソッド

定義位置: yii\db\ConstraintFinderTrait::getTablePrimaryKey()

指定されたテーブルの主キーを取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュ内に見つかった場合でも情報を再読み込みするかどうか。

戻り値 yii\db\Constraint|null

テーブルの主キー。テーブルに主キーがない場合はnull

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

            
getTableSchema() publicメソッド

定義位置: yii\db\Schema::getTableSchema()

指定されたテーブルのメタデータを取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュにテーブルスキーマが存在する場合でも、スキーマを再読み込みするかどうか。

戻り値 yii\db\TableSchema|null

テーブルのメタデータ。指定されたテーブルが存在しない場合はnull

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

            
getTableSchemas() publicメソッド

定義位置: yii\db\Schema::getTableSchemas()

データベース内のすべてのテーブルのメタデータを取得します。

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

テーブルのスキーマ。デフォルトは空文字列で、現在のスキーマ名またはデフォルトのスキーマ名を意味します。

$refresh boolean

最新のテーブルスキーマを取得するかどうか。これがfalseの場合、キャッシュされたデータが利用可能な場合は返されます。

戻り値 yii\db\TableSchema[]

データベース内のすべてのテーブルのメタデータ。各配列要素は、yii\db\TableSchemaまたはその子クラスのインスタンスです。

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

            
getTableUniques() publicメソッド

定義位置: yii\db\ConstraintFinderTrait::getTableUniques()

指定されたテーブルの一意制約情報を取得します。

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

テーブル名。テーブル名には、スキーマ名が含まれる場合があります。テーブル名を引用符で囲まないでください。

$refresh boolean

キャッシュ内に見つかった場合でも情報を再読み込みするかどうか。

戻り値 yii\db\Constraint[]

テーブルの一意制約。

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

            
getUniqueIndexInformation() protectedメソッド

指定されたテーブルの一意インデックスに関する情報を取得します。

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

テーブルメタデータ

戻り値 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メソッド

定義位置: yii\db\ViewFinderTrait::getViewNames()

データベース内のすべてのビュー名を返します。

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

ビューのスキーマ。デフォルトは空文字列で、現在のまたはデフォルトのスキーマ名を意味します。空でない場合、返されるビュー名にはスキーマ名がプレフィックスとして付加されます。

$refresh boolean

最新の利用可能なビュー名をフェッチするかどうか。falseの場合、以前にフェッチされたビュー名(利用可能な場合)が返されます。

戻り値 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メソッド

定義位置: 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() publicメソッド

定義位置: yii\base\BaseObject::hasProperty()

プロパティが定義されているかどうかを示す値を返します。

プロパティは、以下の場合に定義されます。

  • クラスが指定された名前に関連付けられたゲッターまたはセッターメソッドを持つ場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前のメンバ変数がある場合(`$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() publicメソッド

定義位置: yii\base\BaseObject::init()

オブジェクトを初期化します。

このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクタの最後に呼び出されます。

public void init ( )

                public function init()
{
}

            
insert() publicメソッド (バージョン2.0.4以降で利用可能)

INSERT コマンドを実行し、主キーの値を返します。

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

新しい行が挿入されるテーブル。

$columns array

テーブルに挿入される列データ(name => value)。

戻り値 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メソッド

定義位置: yii\db\Schema::isReadQuery()

SQL文が読み取り目的かどうかを示す値を返します。

public boolean isReadQuery ( $sql )
$sql string

SQL文

戻り値 boolean

SQL文が読み取り目的かどうか。

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

            
loadColumnSchema() protectedメソッド

yii\db\pgsql\ColumnSchema オブジェクトに列情報をロードします。

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

列情報

戻り値 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メソッド

protected void loadTableChecks ( $tableName )
$tableName

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

            
loadTableDefaultValues() protectedメソッド

protected void loadTableDefaultValues ( $tableName )
$tableName
例外 yii\base\NotSupportedException

このメソッドが呼び出された場合。

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

            
loadTableForeignKeys() protectedメソッド

protected void loadTableForeignKeys ( $tableName )
$tableName

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

            
loadTableIndexes() protectedメソッド

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メソッド

protected void loadTablePrimaryKey ( $tableName )
$tableName

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

            
loadTableSchema() protectedメソッド

指定されたテーブルのメタデータを読み込みます。

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

テーブル名

戻り値 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メソッド

protected void loadTableUniques ( $tableName )
$tableName

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

            
normalizePdoRowKeyCase() protected メソッド (バージョン 2.0.13 から利用可能)

定義場所: yii\db\Schema::normalizePdoRowKeyCase()

PDOの設定が大文字の場合、行の配列キーの大文字小文字を小文字に変更します。

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

行の配列、または行の配列の配列。

$multiple boolean

単一行が渡されたか、複数行が渡されたかを示す。

戻り値 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 メソッド

定義場所: yii\db\Schema::quoteColumnName()

クエリで使用するための列名を引用符で囲みます。

カラム名にプレフィックスが含まれる場合、プレフィックスも適切に引用符で囲まれます。カラム名が既に引用符で囲まれているか、'('、'[[‘、または'{{'が含まれる場合は、このメソッドは何もしません。

参照: quoteSimpleColumnName()

public string quoteColumnName ( $name )
$name string

カラム名

戻り値 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 メソッド

定義場所: yii\db\Schema::quoteSimpleColumnName()

クエリで使用するための単純な列名を引用符で囲みます。

シンプルなカラム名は、プレフィックスを含まないカラム名のみを含みます。カラム名が既に引用符で囲まれているか、アスタリスク文字 '*' の場合は、このメソッドは何もしません。

public string quoteSimpleColumnName ( $name )
$name string

カラム名

戻り値 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 メソッド

定義場所: yii\db\Schema::quoteSimpleTableName()

クエリで使用するための単純なテーブル名を引用符で囲みます。

シンプルなテーブル名は、スキーマプレフィックスを含まないテーブル名のみを含みます。テーブル名が既に引用符で囲まれている場合、このメソッドは何もしません。

public string quoteSimpleTableName ( $name )
$name string

テーブル名

戻り値 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 メソッド

定義場所: yii\db\Schema::quoteTableName()

クエリで使用するためのテーブル名を引用符で囲みます。

テーブル名にスキーマプレフィックスが含まれる場合、プレフィックスも適切に引用符で囲まれます。テーブル名が既に引用符で囲まれているか、'('または'{{'が含まれる場合は、このメソッドは何もしません。

参照: quoteSimpleTableName()

public string quoteTableName ( $name )
$name string

テーブル名

戻り値 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 メソッド

定義場所: yii\db\Schema::quoteValue()

クエリで使用するための文字列値を引用符で囲みます。

パラメータが文字列でない場合、変更せずに返されることに注意してください。

参照: https://www.php.net/manual/en/function.PDO-quote.php

public string quoteValue ( $str )
$str string

引用符で囲む文字列

戻り値 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 メソッド

定義場所: 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 メソッド (バージョン 2.0.6 から利用可能)

定義場所: 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() public メソッド

定義場所: yii\db\Schema::releaseSavepoint()

既存のセーブポイントを解放します。

public void releaseSavepoint ( $name )
$name string

セーブポイント名

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

            
resolveTableName() protected メソッド (バージョン 2.0.13 から利用可能)

テーブル名とスキーマ名(存在する場合)を解決します。

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

テーブル名

戻り値 yii\db\TableSchema

テーブル名、スキーマ名などが解決された yii\db\TableSchema

例外 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 メソッド

テーブル名とスキーマ名(存在する場合)を解決します。

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

テーブルメタデータオブジェクト

$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() publicメソッド

定義済み場所: yii\db\Schema::rollBackSavepoint()

以前に作成されたセーブポイントにロールバックします。

public void rollBackSavepoint ( $name )
$name string

セーブポイント名

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

            
setTableMetadata() protectedメソッド (バージョン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メソッド

定義済み場所: yii\db\Schema::setTransactionIsolationLevel()

現在のトランザクションの分離レベルを設定します。

こちらも参照してください https://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels.

public void setTransactionIsolationLevel ( $level )
$level string

このトランザクションで使用するトランザクション分離レベル。 yii\db\Transaction::READ_UNCOMMITTEDyii\db\Transaction::READ_COMMITTEDyii\db\Transaction::REPEATABLE_READyii\db\Transaction::SERIALIZABLE のいずれか、または`SET TRANSACTION ISOLATION LEVEL`の後に使用されるDBMS固有の構文を含む文字列です。

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

            
supportsSavepoint() publicメソッド
public boolean supportsSavepoint ( )
戻り値 boolean

このDBMSがセーブポイントをサポートしているかどうか。

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

            
unquoteSimpleColumnName() publicメソッド (バージョン2.0.14から利用可能)

定義済み場所: yii\db\Schema::unquoteSimpleColumnName()

単純な列名の引用符を削除します。

単純な列名は、プレフィックスなしの列名のみを含む必要があります。列名が引用符で囲まれていない場合、またはアスタリスク文字 '*' の場合、このメソッドは何もしません。

public string unquoteSimpleColumnName ( $name )
$name string

列名。

戻り値 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() publicメソッド (バージョン2.0.14から利用可能)

定義済み場所: yii\db\Schema::unquoteSimpleTableName()

単純なテーブル名の引用符を削除します。

単純なテーブル名は、スキーマプレフィックスなしのテーブル名のみを含む必要があります。テーブル名が引用符で囲まれていない場合、このメソッドは何もしません。

public string unquoteSimpleTableName ( $name )
$name string

テーブル名。

戻り値 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);
}