0 フォロワー

クラス yii\db\mysql\Schema

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

Schema は、MySQL データベース (バージョン 4.1.x および 5.x) からメタデータを取得するためのクラスです。

公開プロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元
$columnQuoteCharacter string|string[] 列名を引用符で囲むために使用される文字。 yii\db\mysql\Schema
$columnSchemaClass string|array 列スキーマクラスまたはクラス設定 yii\db\mysql\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
$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\mysql\Schema
$tableSchemas yii\db\TableSchema[] データベース内のすべてのテーブルのメタデータ。 yii\db\Schema
$transactionIsolationLevel string このトランザクションに使用するトランザクション分離レベル。 yii\db\Schema
$typeMap array 物理的な列の種類(キー)から抽象的な列の種類(値)へのマッピング。 yii\db\mysql\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\mysql\Schema
createQueryBuilder() MySQLデータベースのクエリビルダーを作成します。 yii\db\mysql\Schema
createSavepoint() 新しいセーブポイントを作成します。 yii\db\Schema
findUniqueIndexes() 指定されたテーブルのすべての一意インデックスを返します。 yii\db\mysql\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
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
findColumns() テーブル列のメタデータを集めます。 yii\db\mysql\Schema
findConstraints() 指定されたテーブルの外部キー列の詳細を集めます。 yii\db\mysql\Schema
findSchemaNames() デフォルトのスキーマを含みますが、システムスキーマは含まない、データベース内のすべてのスキーマ名を返します。 yii\db\Schema
findTableNames() データベース内のすべてのテーブル名を返します。 yii\db\mysql\Schema
getCacheKey() 指定されたテーブル名のキャッシュキーを返します。 yii\db\Schema
getCacheTag() キャッシュタグ名を返します。 yii\db\Schema
getColumnPhpType() 抽象的なDB型からPHP型を抽出します。 yii\db\Schema
getCreateTableSql() CREATE TABLE SQL文字列を取得します。 yii\db\mysql\Schema
getSchemaMetadata() 指定されたスキーマ内のすべてのテーブルについて、指定された型のメタデータを返します。 yii\db\ConstraintFinderTrait
getTableMetadata() 指定されたテーブルについて、指定された型のメタデータを返します。 yii\db\ConstraintFinderTrait
getTableNameParts() 完全なテーブル名を複数の部分に分割します。 yii\db\Schema
isOldMysql() yii\db\mysql\Schema
loadColumnSchema() yii\db\mysql\ColumnSchemaオブジェクトに列情報をロードします。 yii\db\mysql\Schema
loadTableChecks() yii\db\mysql\Schema
loadTableDefaultValues() yii\db\mysql\Schema
loadTableForeignKeys() yii\db\mysql\Schema
loadTableIndexes() yii\db\mysql\Schema
loadTablePrimaryKey() yii\db\mysql\Schema
loadTableSchema() 指定されたテーブルのメタデータをロードします。 yii\db\mysql\Schema
loadTableUniques() yii\db\mysql\Schema
normalizePdoRowKeyCase() PDOの設定が大文字の場合、行の配列キーの大文字小文字を小文字に変更します。 yii\db\Schema
resolveTableName() テーブル名とスキーマ名(存在する場合)を解決します。 yii\db\mysql\Schema
resolveTableNames() テーブル名とスキーマ名(存在する場合)を解決します。 yii\db\mysql\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\mysql\ColumnSchema'
$tableQuoteCharacter protected プロパティ (バージョン 2.0.14 から使用可能)

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

$typeMap public プロパティ

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

public array $typeMap = [
    
'tinyint' => self::TYPE_TINYINT,
    
'bool' => self::TYPE_TINYINT,
    
'boolean' => self::TYPE_TINYINT,
    
'bit' => self::TYPE_INTEGER,
    
'smallint' => self::TYPE_SMALLINT,
    
'mediumint' => self::TYPE_INTEGER,
    
'int' => self::TYPE_INTEGER,
    
'integer' => self::TYPE_INTEGER,
    
'bigint' => self::TYPE_BIGINT,
    
'float' => self::TYPE_FLOAT,
    
'double' => self::TYPE_DOUBLE,
    
'double precision' => self::TYPE_DOUBLE,
    
'real' => self::TYPE_FLOAT,
    
'decimal' => self::TYPE_DECIMAL,
    
'numeric' => self::TYPE_DECIMAL,
    
'dec' => self::TYPE_DECIMAL,
    
'fixed' => self::TYPE_DECIMAL,
    
'tinytext' => self::TYPE_TEXT,
    
'mediumtext' => self::TYPE_TEXT,
    
'longtext' => self::TYPE_TEXT,
    
'longblob' => self::TYPE_BINARY,
    
'blob' => self::TYPE_BINARY,
    
'text' => self::TYPE_TEXT,
    
'varchar' => self::TYPE_STRING,
    
'string' => self::TYPE_STRING,
    
'char' => self::TYPE_CHAR,
    
'datetime' => self::TYPE_DATETIME,
    
'year' => self::TYPE_DATE,
    
'date' => self::TYPE_DATE,
    
'time' => self::TYPE_TIME,
    
'timestamp' => self::TYPE_TIMESTAMP,
    
'enum' => self::TYPE_STRING,
    
'set' => self::TYPE_STRING,
    
'binary' => self::TYPE_BINARY,
    
'varbinary' => self::TYPE_BINARY,
    
'json' => self::TYPE_JSON,
]

メソッドの詳細

継承されたメソッドを隠す

__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\mysql\ColumnSchemaBuilder::$type を参照してください。

$length integer|string|array|null

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

戻り値 yii\db\ColumnSchemaBuilder

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

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

            
createQueryBuilder() public メソッド

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

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

テーブルがデータベースに存在するかどうか

例外 例外

DBクエリが失敗した場合

                protected function findColumns($table)
{
    $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteTableName($table->fullName);
    try {
        $columns = $this->db->createCommand($sql)->queryAll();
    } catch (\Exception $e) {
        $previous = $e->getPrevious();
        if ($previous instanceof \PDOException && strpos($previous->getMessage(), 'SQLSTATE[42S02') !== false) {
            // table does not exist
            // https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_bad_table_error
            return false;
        }
        throw $e;
    }
    foreach ($columns as $info) {
        if ($this->db->slavePdo->getAttribute(\PDO::ATTR_CASE) !== \PDO::CASE_LOWER) {
            $info = array_change_key_case($info, CASE_LOWER);
        }
        $column = $this->loadColumnSchema($info);
        $table->columns[$column->name] = $column;
        if ($column->isPrimaryKey) {
            $table->primaryKey[] = $column->name;
            if ($column->autoIncrement) {
                $table->sequenceName = '';
            }
        }
    }
    return true;
}

            
findConstraints() protectedメソッド

指定されたテーブルの外部キー列の詳細を集めます。

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

テーブルメタデータ

例外 例外

                protected function findConstraints($table)
{
    $sql = <<<'SQL'
CT
`kcu`.`CONSTRAINT_NAME` AS `constraint_name`,
`kcu`.`COLUMN_NAME` AS `column_name`,
`kcu`.`REFERENCED_TABLE_NAME` AS `referenced_table_name`,
`kcu`.`REFERENCED_COLUMN_NAME` AS `referenced_column_name`
 `information_schema`.`REFERENTIAL_CONSTRAINTS` AS `rc`
 `information_schema`.`KEY_COLUMN_USAGE` AS `kcu` ON
(
    `kcu`.`CONSTRAINT_CATALOG` = `rc`.`CONSTRAINT_CATALOG` OR
    (`kcu`.`CONSTRAINT_CATALOG` IS NULL AND `rc`.`CONSTRAINT_CATALOG` IS NULL)
) AND
`kcu`.`CONSTRAINT_SCHEMA` = `rc`.`CONSTRAINT_SCHEMA` AND
`kcu`.`CONSTRAINT_NAME` = `rc`.`CONSTRAINT_NAME`
E `rc`.`CONSTRAINT_SCHEMA` = database() AND `kcu`.`TABLE_SCHEMA` = database()
`rc`.`TABLE_NAME` = :tableName AND `kcu`.`TABLE_NAME` = :tableName1

    try {
        $rows = $this->db->createCommand($sql, [':tableName' => $table->name, ':tableName1' => $table->name])->queryAll();
        $constraints = [];
        foreach ($rows as $row) {
            $constraints[$row['constraint_name']]['referenced_table_name'] = $row['referenced_table_name'];
            $constraints[$row['constraint_name']]['columns'][$row['column_name']] = $row['referenced_column_name'];
        }
        $table->foreignKeys = [];
        foreach ($constraints as $name => $constraint) {
            $table->foreignKeys[$name] = array_merge(
                [$constraint['referenced_table_name']],
                $constraint['columns']
            );
        }
    } catch (\Exception $e) {
        $previous = $e->getPrevious();
        if (!$previous instanceof \PDOException || strpos($previous->getMessage(), 'SQLSTATE[42S02') === false) {
            throw $e;
        }
        // table does not exist, try to determine the foreign keys using the table creation sql
        $sql = $this->getCreateTableSql($table);
        $regexp = '/FOREIGN KEY\s+\(([^\)]+)\)\s+REFERENCES\s+([^\(^\s]+)\s*\(([^\)]+)\)/mi';
        if (preg_match_all($regexp, $sql, $matches, PREG_SET_ORDER)) {
            foreach ($matches as $match) {
                $fks = array_map('trim', explode(',', str_replace(['`', '"'], '', $match[1])));
                $pks = array_map('trim', explode(',', str_replace(['`', '"'], '', $match[3])));
                $constraint = [str_replace(['`', '"'], '', $match[2])];
                foreach ($fks as $k => $name) {
                    $constraint[$name] = $pks[$k];
                }
                $table->foreignKeys[md5(serialize($constraint))] = $constraint;
            }
            $table->foreignKeys = array_values($table->foreignKeys);
        }
    }
}

            
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 = '')
{
    $sql = 'SHOW TABLES';
    if ($schema !== '') {
        $sql .= ' FROM ' . $this->quoteSimpleTableName($schema);
    }
    return $this->db->createCommand($sql)->queryColumn();
}

            
findUniqueIndexes() publicメソッド

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

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

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

テーブルメタデータ

戻り値 array

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

                public function findUniqueIndexes($table)
{
    $sql = $this->getCreateTableSql($table);
    $uniqueIndexes = [];
    $regexp = '/UNIQUE KEY\s+[`"](.+)[`"]\s*\(([`"].+[`"])+\)/mi';
    if (preg_match_all($regexp, $sql, $matches, PREG_SET_ORDER)) {
        foreach ($matches as $match) {
            $indexName = $match[1];
            $indexColumns = array_map('trim', preg_split('/[`"],[`"]/', trim($match[2], '`"')));
            $uniqueIndexes[$indexName] = $indexColumns;
        }
    }
    return $uniqueIndexes;
}

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

            
getCreateTableSql() protectedメソッド

CREATE TABLE SQL文字列を取得します。

protected string getCreateTableSql ( $table )
$table yii\db\TableSchema

テーブルメタデータ

戻り値 string

$sql 'SHOW CREATE TABLE'の結果

                protected function getCreateTableSql($table)
{
    $row = $this->db->createCommand('SHOW CREATE TABLE ' . $this->quoteTableName($table->fullName))->queryOne();
    if (isset($row['Create Table'])) {
        $sql = $row['Create Table'];
    } else {
        $row = array_values($row);
        $sql = $row[1];
    }
    return $sql;
}

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

テーブルに挿入される列データ (名前 => 値)。

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

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

protected boolean isOldMysql ( )
戻り値 boolean

使用されているMySQLのバージョンが5.1より古いかどうか。

例外 yii\base\InvalidConfigException
例外 yii\db\Exception

                protected function isOldMysql()
{
    if ($this->_oldMysql === null) {
        $version = $this->db->getSlavePdo(true)->getAttribute(\PDO::ATTR_SERVER_VERSION);
        $this->_oldMysql = version_compare($version, '5.1', '<=');
    }
    return $this->_oldMysql;
}

            
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\mysql\ColumnSchemaオブジェクトに列情報をロードします。

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

列情報。

戻り値 yii\db\mysql\ColumnSchema

列スキーマオブジェクト。

                protected function loadColumnSchema($info)
{
    $column = $this->createColumnSchema();
    $column->name = $info['field'];
    $column->allowNull = $info['null'] === 'YES';
    $column->isPrimaryKey = strpos($info['key'], 'PRI') !== false;
    $column->autoIncrement = stripos($info['extra'], 'auto_increment') !== false;
    $column->comment = $info['comment'];
    $column->dbType = $info['type'];
    $column->unsigned = stripos($column->dbType, 'unsigned') !== false;
    $column->type = self::TYPE_STRING;
    if (preg_match('/^(\w+)(?:\(([^\)]+)\))?/', $column->dbType, $matches)) {
        $type = strtolower($matches[1]);
        if (isset($this->typeMap[$type])) {
            $column->type = $this->typeMap[$type];
        }
        if (!empty($matches[2])) {
            if ($type === 'enum') {
                preg_match_all("/'[^']*'/", $matches[2], $values);
                foreach ($values[0] 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) {
        /**
         * When displayed in the INFORMATION_SCHEMA.COLUMNS table, a default CURRENT TIMESTAMP is displayed
         * as CURRENT_TIMESTAMP up until MariaDB 10.2.2, and as current_timestamp() from MariaDB 10.2.3.
         *
         * See details here: https://mariadb.com/kb/en/library/now/#description
         */
        if (
            in_array($column->type, ['timestamp', 'datetime', 'date', 'time'])
            && isset($info['default'])
            && preg_match('/^current_timestamp(?:\(([0-9]*)\))?$/i', $info['default'], $matches)
        ) {
            $column->defaultValue = new Expression('CURRENT_TIMESTAMP' . (!empty($matches[1]) ? '(' . $matches[1] . ')' : ''));
        } elseif (isset($type) && $type === 'bit') {
            $column->defaultValue = bindec(trim(isset($info['default']) ? $info['default'] : '', 'b\''));
        } 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('MySQL does not support check constraints.');
}

            
loadTableDefaultValues() protectedメソッド

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

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

                protected function loadTableDefaultValues($tableName)
{
    throw new NotSupportedException('MySQL 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
`s`.`INDEX_NAME` AS `name`,
`s`.`COLUMN_NAME` AS `column_name`,
`s`.`NON_UNIQUE` ^ 1 AS `index_is_unique`,
`s`.`INDEX_NAME` = 'PRIMARY' AS `index_is_primary`
 `information_schema`.`STATISTICS` AS `s`
E `s`.`TABLE_SCHEMA` = COALESCE(:schemaName, DATABASE()) AND `s`.`INDEX_SCHEMA` = `s`.`TABLE_SCHEMA` AND `s`.`TABLE_NAME` = :tableName
R BY `s`.`SEQ_IN_INDEX` 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 !== 'PRIMARY' ? $name : null,
            '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().

公開 文字列 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()

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

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

公開 文字列 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()

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

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

公開 文字列 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().

公開 文字列 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.

公開 文字列 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()

スキーマを更新します。

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

公開 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()

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

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

公開 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()

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

公開 void releaseSavepoint ( $name )
$name string

セーブポイント名

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

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

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

保護済み 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メソッド

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

保護済み 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];
        $table->fullName = $table->schemaName . '.' . $table->name;
    } else {
        $table->fullName = $table->name = $parts[0];
    }
}

            
rollBackSavepoint() publicメソッド

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

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

公開 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()

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

保護済み 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.

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

定義されている場所: 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);
}