0 フォロワー

抽象クラス yii\db\Schema

継承yii\db\Schema » yii\base\BaseObject
実装yii\base\Configurable
サブクラスyii\db\cubrid\Schemayii\db\mssql\Schemayii\db\mysql\Schemayii\db\oci\Schemayii\db\pgsql\Schemayii\db\sqlite\Schema
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/db/Schema.php

Schema は、具体的なDBMS固有のスキーマクラスのための基底クラスです。

Schema は、DBMS固有のデータベーススキーマ情報を表します。

公開プロパティ

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

プロパティ 説明 定義元
$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\Schema
$lastInsertID string 最後に挿入された行の行ID、またはシーケンスオブジェクトから取得された最後の値。 yii\db\Schema
$queryBuilder yii\db\QueryBuilder この接続のクエリビルダー。 yii\db\Schema
$schemaNames string[] データベース内のすべてのスキーマ名(システムスキーマを除く)。 yii\db\Schema
$serverVersion string 文字列としてのサーバーバージョン。 yii\db\Schema
$tableNames string[] データベース内のすべてのテーブル名。 yii\db\Schema
$tableQuoteCharacter string|string[] スキーマ、テーブルなどを引用符で囲むために使用される文字。 yii\db\Schema
$tableSchemas yii\db\TableSchema[] データベース内のすべてのテーブルのメタデータ。 yii\db\Schema
$transactionIsolationLevel string このトランザクションに使用されるトランザクション分離レベル。 yii\db\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\Schema
createQueryBuilder() データベースのクエリビルダーを作成します。 yii\db\Schema
createSavepoint() 新しいセーブポイントを作成します。 yii\db\Schema
findUniqueIndexes() 指定されたテーブルのすべてのユニークインデックスを返します。 yii\db\Schema
getLastInsertID() 最後に挿入された行またはシーケンス値のIDを返します。 yii\db\Schema
getPdoType() 指定されたPHPデータ値のPDO型を決定します。 yii\db\Schema
getQueryBuilder() yii\db\Schema
getRawTableName() 指定されたテーブル名の実際の名前を返します。 yii\db\Schema
getSchemaNames() データベース内のすべてのスキーマ名(システムスキーマを除く)を返します。 yii\db\Schema
getServerVersion() \version_compare()で比較可能な文字列としてサーバーバージョンを返します。 yii\db\Schema
getTableNames() データベース内のすべてのテーブル名を返します。 yii\db\Schema
getTableSchema() 指定されたテーブルのメタデータを取得します。 yii\db\Schema
getTableSchemas() データベース内のすべてのテーブルのメタデータの配列を返します。 yii\db\Schema
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\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
findSchemaNames() データベース内のすべてのスキーマ名(デフォルトのものも含むが、システムスキーマは除く)を返します。 yii\db\Schema
findTableNames() データベース内のすべてのテーブル名を返します。 yii\db\Schema
getCacheKey() 指定されたテーブル名のキャッシュキーを返します。 yii\db\Schema
getCacheTag() キャッシュタグ名を返します。 yii\db\Schema
getColumnPhpType() 抽象的なDB型からPHP型を抽出します。 yii\db\Schema
getSchemaMetadata() 指定されたスキーマ内のすべてのテーブルについて、指定された型のメタデータを返します。 yii\db\Schema
getTableMetadata() 指定されたテーブルについて、指定された型のメタデータを返します。 yii\db\Schema
getTableNameParts() 完全なテーブル名を複数の部分に分割します。 yii\db\Schema
loadTableSchema() 指定されたテーブルのメタデータを読み込みます。 yii\db\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

プロパティの詳細

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

$columnQuoteCharacter protected プロパティ (バージョン 2.0.14 から使用可能)

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

$columnSchemaClass public プロパティ (バージョン 2.0.11 から使用可能)

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

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

データベース接続

public yii\db\Connection $db null
$defaultSchema public プロパティ

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

public string $defaultSchema null
$exceptionMap public プロパティ

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

public array $exceptionMap = [
    
'SQLSTATE[23' => 'yii\db\IntegrityException',
]
$lastInsertID public プロパティ

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

public string $lastInsertID null
$queryBuilder public プロパティ

この接続のクエリビルダー。

$schemaNames public プロパティ

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

public string[] $schemaNames null
$serverVersion public プロパティ

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

public string $serverVersion null
$tableNames public プロパティ

データベース内のすべてのテーブル名。

public string[] $tableNames null
$tableQuoteCharacter protected プロパティ (バージョン 2.0.14 から使用可能)

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

$tableSchemas public プロパティ

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

$transactionIsolationLevel public プロパティ

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

メソッドの詳細

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

__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()

オブジェクトプロパティの値を返します。

`$value = $object->property;`を実行した際に暗黙的に呼び出されるPHPのマジックメソッドなので、直接呼び出さないでください。

__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ではないか)を確認します。

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

プロパティが定義されていない場合、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()

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

`$object->property = $value;`を実行した際に暗黙的に呼び出されるPHPのマジックメソッドなので、直接呼び出さないでください。

__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に設定します。

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

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

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

可能であれば、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メソッド

データベースの列スキーマを作成します。

このメソッドは、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\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メソッド

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

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

public yii\db\QueryBuilder createQueryBuilder ( )
戻り値 yii\db\QueryBuilder

クエリビルダーインスタンス

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

            
createSavepoint() publicメソッド

新しいセーブポイントを作成します。

public void createSavepoint ( $name )
$name string

セーブポイント名

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

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

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

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

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 = '')
{
    throw new NotSupportedException(get_class($this) . ' does not support fetching all table names.');
}

            
findUniqueIndexes() publicメソッド

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

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

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

指定されたテーブル名のキャッシュキーを返します。

protected mixed getCacheKey ( $name )
$name string

テーブル名。

戻り値 mixed

キャッシュキー。

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

            
getCacheTag() protectedメソッド

キャッシュタグ名を返します。

これにより、refresh() は、キャッシュされたすべてのテーブルスキーマを無効にすることができます。

protected string getCacheTag ( )
戻り値 string

キャッシュタグ名

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

            
getColumnPhpType() protectedメソッド

抽象的な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メソッド

最後に挿入された行またはシーケンス値の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_BOOL,
        'integer' => \PDO::PARAM_INT,
        'string' => \PDO::PARAM_STR,
        'resource' => \PDO::PARAM_LOB,
        'NULL' => \PDO::PARAM_NULL,
    ];
    $type = gettype($data);
    return isset($typeMap[$type]) ? $typeMap[$type] : \PDO::PARAM_STR;
}

            
getQueryBuilder() publicメソッド

public yii\db\QueryBuilder getQueryBuilder ( )
戻り値 yii\db\QueryBuilder

この接続のクエリビルダー。

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

            
getRawTableName() publicメソッド

指定されたテーブル名の実際の名前を返します。

このメソッドは、指定されたテーブル名から波括弧を取り除き、パーセント記号「%」を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;
}

            
getSchemaMetadata() protectedメソッド (バージョン2.0.13以降で使用可能)

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

このメソッドは、テーブル名と更新フラグを使用して、`'getTable' . ucfirst($type)`という名前のメソッドを呼び出し、メタデータを取得します。

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

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

$type string

メタデータの種類。

$refresh boolean

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

戻り値 array

メタデータの配列。

                protected function getSchemaMetadata($schema, $type, $refresh)
{
    $metadata = [];
    $methodName = 'getTable' . ucfirst($type);
    foreach ($this->getTableNames($schema, $refresh) as $name) {
        if ($schema !== '') {
            $name = $schema . '.' . $name;
        }
        $tableMetadata = $this->$methodName($name, $refresh);
        if ($tableMetadata !== null) {
            $metadata[] = $tableMetadata;
        }
    }
    return $metadata;
}

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

データベース内のすべてのスキーマ名(システムスキーマを除く)を返します。

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

            
getServerVersion() publicメソッド (バージョン2.0.14以降で使用可能)

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

            
getTableMetadata() protectedメソッド (バージョン2.0.13以降で使用可能)

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

キャッシュにメタデータがない場合、このメソッドはテーブル名を使用して`'loadTable' . ucfirst($type)`という名前のメソッドを呼び出し、メタデータを取得します。

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

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

$type string

メタデータの種類。

$refresh boolean

キャッシュにある場合でも、テーブルメタデータをリロードするかどうか。

戻り値 mixed

メタデータ。

                protected function getTableMetadata($name, $type, $refresh)
{
    $cache = null;
    if ($this->db->enableSchemaCache && !in_array($name, $this->db->schemaCacheExclude, true)) {
        $schemaCache = is_string($this->db->schemaCache) ? Yii::$app->get($this->db->schemaCache, false) : $this->db->schemaCache;
        if ($schemaCache instanceof CacheInterface) {
            $cache = $schemaCache;
        }
    }
    $rawName = $this->getRawTableName($name);
    if (!isset($this->_tableMetadata[$rawName])) {
        $this->loadTableMetadataFromCache($cache, $rawName);
    }
    if ($refresh || !array_key_exists($type, $this->_tableMetadata[$rawName])) {
        $this->_tableMetadata[$rawName][$type] = $this->{'loadTable' . ucfirst($type)}($rawName);
        $this->saveTableMetadataToCache($cache, $rawName);
    }
    return $this->_tableMetadata[$rawName][$type];
}

            
getTableNameParts() protectedメソッド (バージョン2.0.22以降で使用可能)

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

protected array getTableNameParts ( $name )
$name string

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

            
getTableNames() publicメソッド

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

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

            
getTableSchema() publicメソッド

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

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

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

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

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

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

            
loadTableSchema() protected abstract メソッド

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

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

テーブル名

戻り値 yii\db\TableSchema|null

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

                abstract protected function loadTableSchema($name);

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

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

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

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

関連項目 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 メソッド

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

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

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

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

単純なテーブル名は、スキーマ接頭辞を含まないテーブル名のみを含みます。テーブル名が既に引用符で囲まれている場合、このメソッドは何もしません。

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

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

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

関連項目 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 メソッド

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

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

関連項目 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メソッド

スキーマを更新します。

このメソッドは、キャッシュされたすべてのテーブルスキーマをクリーンアップします。これにより、データベーススキーマの変更を反映するために、後でスキーマを再作成できます。

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から利用可能)

特定のテーブルスキーマを更新します。

このメソッドは、キャッシュされたテーブルスキーマをクリーンアップします。これにより、データベーススキーマの変更を反映するために、後でスキーマを再作成できます。

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)
{
    $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)
{
    throw new NotSupportedException(get_class($this) . ' does not support resolving table names.');
}

            
rollBackSavepoint() publicメソッド

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

public void rollBackSavepoint ( $name )
$name string

セーブポイント名

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

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

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

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://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から利用可能)

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

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

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から利用可能)

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

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

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