0 フォロワー

クラス yii\db\cubrid\Schema

継承yii\db\cubrid\Schema » yii\db\Schema » yii\base\BaseObject
実装yii\base\Configurable, yii\db\ConstraintFinderInterface
使用するトレイトyii\db\ConstraintFinderTrait
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/db/cubrid/Schema.php

Schema は、CUBRID データベース (バージョン 9.3.x 以降) からメタデータを取得するためのクラスです。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$columnQuoteCharacter string|string[] 列名を引用符で囲むために使用する文字。 yii\db\Schema
$columnSchemaClass string|array 列スキーマクラスまたはクラス設定 yii\db\Schema
$db yii\db\Connection データベース接続 yii\db\Schema
$defaultSchema string 現在のセッションで使用されるデフォルトスキーマ名。 yii\db\Schema
$exceptionMap array DB エラーと対応する例外のマッピング。左側の部分が DB エラーメッセージに見つかった場合、右側の部分の例外クラスが使用されます。 yii\db\cubrid\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\cubrid\Schema
$tableSchemas yii\db\TableSchema[] データベース内のすべてのテーブルのメタデータ。 yii\db\Schema
$transactionIsolationLevel string このトランザクションに使用するトランザクション分離レベル。 yii\db\Schema
$typeMap array 物理的な列の種類 (キー) から抽象的な列の種類 (値) へのマッピング。データ型については、CUBRID マニュアル を参照してください。 yii\db\cubrid\Schema

保護されたプロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__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\cubrid\Schema
createQueryBuilder() CUBRID データベースのクエリビルダーを作成します。 yii\db\cubrid\Schema
createSavepoint() 新しいセーブポイントを作成します。 yii\db\Schema
findUniqueIndexes() 指定されたテーブルのすべての一意インデックスを返します。 yii\db\Schema
getLastInsertID() 最後に挿入された行またはシーケンス値の ID を返します。 yii\db\Schema
getPdoType() 指定された PHP データ値の PDO 型を決定します。 yii\db\cubrid\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
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject
insert() 主キー値を返す INSERT コマンドを実行します。 yii\db\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\cubrid\Schema
rollBackSavepoint() 以前に作成されたセーブポイントにロールバックします。 yii\db\Schema
setTransactionIsolationLevel() 現在のトランザクションの分離レベルを設定します。 yii\db\cubrid\Schema
supportsSavepoint() yii\db\Schema
unquoteSimpleColumnName() 単純な列名の引用符を削除します。 yii\db\Schema
unquoteSimpleTableName() 単純なテーブル名の引用符を削除します。 yii\db\Schema

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
createColumnSchema() データベースの列スキーマを作成します。 yii\db\Schema
findSchemaNames() データベース内のすべてのスキーマ名(デフォルトのスキーマを含むが、システムスキーマを除く)を返します。 yii\db\Schema
findTableNames() データベース内のすべてのテーブル名を返します。 yii\db\cubrid\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
loadColumnSchema() yii\db\ColumnSchema オブジェクトに列情報をロードします。 yii\db\cubrid\Schema
loadTableChecks() yii\db\cubrid\Schema
loadTableDefaultValues() yii\db\cubrid\Schema
loadTableForeignKeys() yii\db\cubrid\Schema
loadTableIndexes() yii\db\cubrid\Schema
loadTablePrimaryKey() yii\db\cubrid\Schema
loadTableSchema() 指定されたテーブルのメタデータをロードします。 yii\db\cubrid\Schema
loadTableUniques() yii\db\cubrid\Schema
normalizePdoRowKeyCase() PDOの設定が大文字の場合、行の配列キーの大文字小文字を小文字に変更します。 yii\db\Schema
resolveTableName() テーブル名とスキーマ名(存在する場合)を解決します。 yii\db\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_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

プロパティの詳細

継承されたプロパティを非表示

$exceptionMap public property

DB エラーと対応する例外のマッピング。左側の部分が DB エラーメッセージに見つかった場合、右側の部分の例外クラスが使用されます。

public array $exceptionMap = [
    
'Operation would have caused one or more unique constraint violations' => 'yii\db\IntegrityException',
]
$tableQuoteCharacter protected property (version 2.0.14以降で使用可能)

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

$typeMap public property

物理的な列の種類 (キー) から抽象的な列の種類 (値) へのマッピング。データ型については、CUBRID マニュアル を参照してください。

public array $typeMap = [
    
'short' => self::TYPE_SMALLINT,
    
'smallint' => self::TYPE_SMALLINT,
    
'int' => self::TYPE_INTEGER,
    
'integer' => self::TYPE_INTEGER,
    
'bigint' => self::TYPE_BIGINT,
    
'numeric' => self::TYPE_DECIMAL,
    
'decimal' => self::TYPE_DECIMAL,
    
'float' => self::TYPE_FLOAT,
    
'real' => self::TYPE_FLOAT,
    
'double' => self::TYPE_DOUBLE,
    
'double precision' => self::TYPE_DOUBLE,
    
'monetary' => self::TYPE_MONEY,
    
'date' => self::TYPE_DATE,
    
'time' => self::TYPE_TIME,
    
'timestamp' => self::TYPE_TIMESTAMP,
    
'datetime' => self::TYPE_DATETIME,
    
'char' => self::TYPE_CHAR,
    
'varchar' => self::TYPE_STRING,
    
'char varying' => self::TYPE_STRING,
    
'nchar' => self::TYPE_CHAR,
    
'nchar varying' => self::TYPE_STRING,
    
'string' => self::TYPE_STRING,
    
'blob' => self::TYPE_BINARY,
    
'clob' => self::TYPE_BINARY,
    
'bit' => self::TYPE_INTEGER,
    
'bit varying' => self::TYPE_INTEGER,
    
'set' => self::TYPE_STRING,
    
'multiset' => self::TYPE_STRING,
    
'list' => self::TYPE_STRING,
    
'sequence' => self::TYPE_STRING,
    
'enum' => 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 例外
$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から利用可能)

型と値の精度を指定して、列スキーマビルダーインスタンスを作成します。

このメソッドは、DBMS固有の列スキーマビルダーを作成するために、子クラスによってオーバーライドされる場合があります。

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

列の型。 yii\db\cubrid\ColumnSchemaBuilder::$typeを参照してください。

$length integer|string|array|null

列の長さまたは精度。 yii\db\cubrid\ColumnSchemaBuilder::$lengthを参照してください。

戻り値 yii\db\ColumnSchemaBuilder

列スキーマビルダーインスタンス

                public function createColumnSchemaBuilder($type, $length = null)
{
    return new ColumnSchemaBuilder($type, $length, $this->db);
}

            
createQueryBuilder() publicメソッド

CUBRID データベースのクエリビルダーを作成します。

public yii\db\cubrid\QueryBuilder createQueryBuilder ( )
戻り値 yii\db\cubrid\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();
}

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

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

データベース内のすべてのスキーマ名(デフォルトのスキーマを含むが、システムスキーマを除く)を返します。

この機能をサポートするために、このメソッドは子クラスによってオーバーライドされる必要があります。デフォルトの実装は単に例外をスローします。

protected array findSchemaNames ( )
戻り値 array

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

例外 yii\base\NotSupportedException

このメソッドがDBMSでサポートされていない場合。

                protected function findSchemaNames()
{
    throw new NotSupportedException(get_class($this) . ' does not support fetching all schema names.');
}

            
findTableNames() protectedメソッド

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

この機能をサポートするために、このメソッドは子クラスによってオーバーライドされる必要があります。デフォルトの実装は単に例外をスローします。

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

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

戻り値 array

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

例外 yii\base\NotSupportedException

このメソッドがDBMSでサポートされていない場合。

                protected function findTableNames($schema = '')
{
    $pdo = $this->db->getSlavePdo(true);
    $tables = $pdo->cubrid_schema(\PDO::CUBRID_SCH_TABLE);
    $tableNames = [];
    foreach ($tables as $table) {
        // do not list system tables
        if ($table['TYPE'] != 0) {
            $tableNames[] = $table['NAME'];
        }
    }
    return $tableNames;
}

            
findUniqueIndexes() publicメソッド

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

指定されたテーブルのすべての一意インデックスを返します。

各配列要素は以下の構造です。

[
 'IndexName1' => ['col1' [, ...]],
 'IndexName2' => ['col2' [, ...]],
]

このメソッドは、デフォルトの実装では単に例外をスローするため、この機能をサポートするために子クラスによってオーバーライドする必要があります。

public array findUniqueIndexes ( $table )
$table yii\db\TableSchema

テーブルメタデータ

戻り値 array

指定されたテーブルの一意インデックスすべて。

例外 yii\base\NotSupportedException

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

                public function findUniqueIndexes($table)
{
    throw new NotSupportedException(get_class($this) . ' does not support getting unique indexes information.');
}

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

指定された 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_INT, // PARAM_BOOL is not supported by CUBRID PDO
        '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);
}

            
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以降で利用可能)

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

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

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

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

$columns array

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

戻り値 array|false

主キーの値、またはコマンドが失敗した場合はfalse。

                public function insert($table, $columns)
{
    $command = $this->db->createCommand()->insert($table, $columns);
    if (!$command->execute()) {
        return false;
    }
    $tableSchema = $this->getTableSchema($table);
    $result = [];
    foreach ($tableSchema->primaryKey as $name) {
        if ($tableSchema->columns[$name]->autoIncrement) {
            $result[$name] = $this->getLastInsertID($tableSchema->sequenceName);
            break;
        }
        $result[$name] = isset($columns[$name]) ? $columns[$name] : $tableSchema->columns[$name]->defaultValue;
    }
    return $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\ColumnSchema オブジェクトに列情報をロードします。

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

カラム情報

戻り値 yii\db\ColumnSchema

カラムスキーマオブジェクト

                protected function loadColumnSchema($info)
{
    $column = $this->createColumnSchema();
    $column->name = $info['Field'];
    $column->allowNull = $info['Null'] === 'YES';
    $column->isPrimaryKey = false; // primary key will be set by loadTableSchema() later
    $column->autoIncrement = stripos($info['Extra'], 'auto_increment') !== false;
    $column->dbType = $info['Type'];
    $column->unsigned = strpos($column->dbType, 'unsigned') !== false;
    $column->type = self::TYPE_STRING;
    if (preg_match('/^([\w ]+)(?:\(([^\)]+)\))?$/', $column->dbType, $matches)) {
        $type = strtolower($matches[1]);
        $column->dbType = $type . (isset($matches[2]) ? "({$matches[2]})" : '');
        if (isset($this->typeMap[$type])) {
            $column->type = $this->typeMap[$type];
        }
        if (!empty($matches[2])) {
            if ($type === 'enum') {
                $values = preg_split('/\s*,\s*/', $matches[2]);
                foreach ($values as $i => $value) {
                    $values[$i] = trim($value, "'");
                }
                $column->enumValues = $values;
            } else {
                $values = explode(',', $matches[2]);
                $column->size = $column->precision = (int) $values[0];
                if (isset($values[1])) {
                    $column->scale = (int) $values[1];
                }
                if ($column->size === 1 && $type === 'bit') {
                    $column->type = 'boolean';
                } elseif ($type === 'bit') {
                    if ($column->size > 32) {
                        $column->type = 'bigint';
                    } elseif ($column->size === 32) {
                        $column->type = 'integer';
                    }
                }
            }
        }
    }
    $column->phpType = $this->getColumnPhpType($column);
    if ($column->isPrimaryKey) {
        return $column;
    }
    if (
        $column->type === 'timestamp' && $info['Default'] === 'SYS_TIMESTAMP' ||
        $column->type === 'datetime' && $info['Default'] === 'SYS_DATETIME' ||
        $column->type === 'date' && $info['Default'] === 'SYS_DATE' ||
        $column->type === 'time' && $info['Default'] === 'SYS_TIME'
    ) {
        $column->defaultValue = new Expression($info['Default']);
    } elseif (isset($type) && $type === 'bit') {
        $column->defaultValue = hexdec(trim($info['Default'], 'X\''));
    } else {
        $column->defaultValue = $column->phpTypecast($info['Default']);
    }
    return $column;
}

            
loadTableChecks() protectedメソッド

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

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

                protected function loadTableChecks($tableName)
{
    throw new NotSupportedException('CUBRID does not support check constraints.');
}

            
loadTableDefaultValues() protectedメソッド

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

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

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

            
loadTableForeignKeys() protectedメソッド

protected void loadTableForeignKeys ( $tableName )
$tableName

                protected function loadTableForeignKeys($tableName)
{
    static $actionTypes = [
        0 => 'CASCADE',
        1 => 'RESTRICT',
        2 => 'NO ACTION',
        3 => 'SET NULL',
    ];
    $foreignKeys = $this->db->getSlavePdo(true)->cubrid_schema(\PDO::CUBRID_SCH_IMPORTED_KEYS, $tableName);
    $foreignKeys = ArrayHelper::index($foreignKeys, null, 'FK_NAME');
    ArrayHelper::multisort($foreignKeys, 'KEY_SEQ', SORT_ASC, SORT_NUMERIC);
    $result = [];
    foreach ($foreignKeys as $name => $foreignKey) {
        $result[] = new ForeignKeyConstraint([
            'name' => $name,
            'columnNames' => ArrayHelper::getColumn($foreignKey, 'FKCOLUMN_NAME'),
            'foreignTableName' => $foreignKey[0]['PKTABLE_NAME'],
            'foreignColumnNames' => ArrayHelper::getColumn($foreignKey, 'PKCOLUMN_NAME'),
            'onDelete' => isset($actionTypes[$foreignKey[0]['DELETE_RULE']]) ? $actionTypes[$foreignKey[0]['DELETE_RULE']] : null,
            'onUpdate' => isset($actionTypes[$foreignKey[0]['UPDATE_RULE']]) ? $actionTypes[$foreignKey[0]['UPDATE_RULE']] : null,
        ]);
    }
    return $result;
}

            
loadTableIndexes() protectedメソッド

protected void loadTableIndexes ( $tableName )
$tableName

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

            
loadTablePrimaryKey() protectedメソッド

protected void loadTablePrimaryKey ( $tableName )
$tableName

                protected function loadTablePrimaryKey($tableName)
{
    $primaryKey = $this->db->getSlavePdo(true)->cubrid_schema(\PDO::CUBRID_SCH_PRIMARY_KEY, $tableName);
    if (empty($primaryKey)) {
        return null;
    }
    ArrayHelper::multisort($primaryKey, 'KEY_SEQ', SORT_ASC, SORT_NUMERIC);
    return new Constraint([
        'name' => $primaryKey[0]['KEY_NAME'],
        'columnNames' => ArrayHelper::getColumn($primaryKey, 'ATTR_NAME'),
    ]);
}

            
loadTableSchema() protectedメソッド

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

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

テーブル名

戻り値 yii\db\TableSchema|null

DBMS依存のテーブルメタデータ、テーブルが存在しない場合はnull

                protected function loadTableSchema($name)
{
    $pdo = $this->db->getSlavePdo(true);
    $tableInfo = $pdo->cubrid_schema(\PDO::CUBRID_SCH_TABLE, $name);
    if (!isset($tableInfo[0]['NAME'])) {
        return null;
    }
    $table = new TableSchema();
    $table->fullName = $table->name = $tableInfo[0]['NAME'];
    $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteSimpleTableName($table->name);
    $columns = $this->db->createCommand($sql)->queryAll();
    foreach ($columns as $info) {
        $column = $this->loadColumnSchema($info);
        $table->columns[$column->name] = $column;
    }
    $primaryKeys = $pdo->cubrid_schema(\PDO::CUBRID_SCH_PRIMARY_KEY, $table->name);
    foreach ($primaryKeys as $key) {
        $column = $table->columns[$key['ATTR_NAME']];
        $column->isPrimaryKey = true;
        $table->primaryKey[] = $column->name;
        if ($column->autoIncrement) {
            $table->sequenceName = '';
        }
    }
    $foreignKeys = $pdo->cubrid_schema(\PDO::CUBRID_SCH_IMPORTED_KEYS, $table->name);
    foreach ($foreignKeys as $key) {
        if (isset($table->foreignKeys[$key['FK_NAME']])) {
            $table->foreignKeys[$key['FK_NAME']][$key['FKCOLUMN_NAME']] = $key['PKCOLUMN_NAME'];
        } else {
            $table->foreignKeys[$key['FK_NAME']] = [
                $key['PKTABLE_NAME'],
                $key['FKCOLUMN_NAME'] => $key['PKCOLUMN_NAME'],
            ];
        }
    }
    return $table;
}

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

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

public void releaseSavepoint ( $name )
$name string

セーブポイント名

                public function releaseSavepoint($name)
{
    // does nothing as cubrid does not support this
}

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

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

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

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

テーブル名

戻り値 yii\db\TableSchema

テーブル名、スキーマ名などが解決済みの yii\db\TableSchema

例外 yii\base\NotSupportedException

このメソッドがDBMSでサポートされていない場合。

                protected function resolveTableName($name)
{
    throw new NotSupportedException(get_class($this) . ' does not support resolving table names.');
}

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

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

参照: https://www.cubrid.org/manual/en/9.3.0/sql/transaction.html#database-concurrency.

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)
{
    // translate SQL92 levels to CUBRID levels:
    switch ($level) {
        case Transaction::SERIALIZABLE:
            $level = '6'; // SERIALIZABLE
            break;
        case Transaction::REPEATABLE_READ:
            $level = '5'; // REPEATABLE READ CLASS with REPEATABLE READ INSTANCES
            break;
        case Transaction::READ_COMMITTED:
            $level = '4'; // REPEATABLE READ CLASS with READ COMMITTED INSTANCES
            break;
        case Transaction::READ_UNCOMMITTED:
            $level = '3'; // REPEATABLE READ CLASS with READ UNCOMMITTED INSTANCES
            break;
    }
    parent::setTransactionIsolationLevel($level);
}

            
supportsSavepoint() publicメソッド

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

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