# Class yii\db\sqlite\Schema

Inheritance | yii\db\sqlite\Schema » yii\db\Schema » yii\base\BaseObject
Implements | yii\base\Configurable, yii\db\ConstraintFinderInterface
Uses Traits | yii\db\ConstraintFinderTrait
Available since version | 2.0
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/db/sqlite/Schema.php

Schema is the class for retrieving metadata from a SQLite (2/3) database.

## Public Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---
$columnQuoteCharacter | string|string[] | Character used to quote column names. | yii\db\sqlite\Schema
$columnSchemaClass | string|array | Column schema class or class config | yii\db\Schema
$db | yii\db\Connection | The database connection | yii\db\Schema
$defaultSchema | string | The default schema name used for the current session. | yii\db\Schema
$exceptionMap | array | Map of DB errors and corresponding exceptions If left part is found in DB error message exception class from the right part is used. | yii\db\Schema
$lastInsertID | string | The row ID of the last row inserted, or the last value retrieved from the sequence object. | yii\db\Schema
$queryBuilder | yii\db\QueryBuilder | The query builder for this connection. | yii\db\Schema
$schemaChecks | \yii\db\CheckConstraint[][] | Check constraints for all tables in the database. | yii\db\ConstraintFinderTrait
$schemaDefaultValues | yii\db\DefaultValueConstraint[] | Default value constraints for all tables in the database. | yii\db\ConstraintFinderTrait
$schemaForeignKeys | \yii\db\ForeignKeyConstraint[][] | Foreign keys for all tables in the database. | yii\db\ConstraintFinderTrait
$schemaIndexes | \yii\db\IndexConstraint[][] | Indexes for all tables in the database. | yii\db\ConstraintFinderTrait
$schemaNames | string[] | All schema names in the database, except system schemas. | yii\db\Schema
$schemaPrimaryKeys | yii\db\Constraint[] | Primary keys for all tables in the database. | yii\db\ConstraintFinderTrait
$schemaUniques | \yii\db\IndexConstraint[][] | Unique constraints for all tables in the database. | yii\db\ConstraintFinderTrait
$serverVersion | string | Server version as a string. | yii\db\Schema
$tableNames | string[] | All table names in the database. | yii\db\Schema
$tableQuoteCharacter | string|string[] | Character used to quote schema, table, etc. | yii\db\sqlite\Schema
$tableSchemas | yii\db\TableSchema[] | The metadata for all tables in the database. | yii\db\Schema
$transactionIsolationLevel | string | The transaction isolation level to use for this transaction. | yii\db\sqlite\Schema
$typeMap | array | Mapping from physical column types (keys) to abstract column types (values) | yii\db\sqlite\Schema

## Protected Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
__call() | Calls the named method which is not a class method. | yii\base\BaseObject
__construct() | Constructor. | yii\base\BaseObject
__get() | Returns the value of an object property. | yii\base\BaseObject
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\BaseObject
__set() | Sets value of an object property. | yii\base\BaseObject
__unset() | Sets an object property to null. | yii\base\BaseObject
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\BaseObject
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\BaseObject
className() | Returns the fully qualified name of this class. | yii\base\BaseObject
convertException() | Converts a DB exception to a more concrete one if possible. | yii\db\Schema
createColumnSchemaBuilder() | Create a column schema builder instance giving the type and value precision. | yii\db\sqlite\Schema
createQueryBuilder() | Creates a query builder for the MySQL database. | yii\db\sqlite\Schema
createSavepoint() | Creates a new savepoint. | yii\db\Schema
findUniqueIndexes() | Returns all unique indexes for the given table. | yii\db\sqlite\Schema
getLastInsertID() | Returns the ID of the last inserted row or sequence value. | yii\db\Schema
getPdoType() | Determines the PDO type for the given PHP data value. | yii\db\Schema
getQueryBuilder() |  | yii\db\Schema
getRawTableName() | Returns the actual name of a given table name. | yii\db\Schema
getSchemaChecks() | Returns check constraints for all tables in the database. | yii\db\ConstraintFinderTrait
getSchemaDefaultValues() | Returns default value constraints for all tables in the database. | yii\db\ConstraintFinderTrait
getSchemaForeignKeys() | Returns foreign keys for all tables in the database. | yii\db\ConstraintFinderTrait
getSchemaIndexes() | Returns indexes for all tables in the database. | yii\db\ConstraintFinderTrait
getSchemaNames() | Returns all schema names in the database, except system schemas. | yii\db\Schema
getSchemaPrimaryKeys() | Returns primary keys for all tables in the database. | yii\db\ConstraintFinderTrait
getSchemaUniques() | Returns unique constraints for all tables in the database. | yii\db\ConstraintFinderTrait
getServerVersion() | Returns a server version as a string comparable by \version_compare(). | yii\db\Schema
getTableChecks() | Obtains the check constraints information for the named table. | yii\db\ConstraintFinderTrait
getTableDefaultValues() | Obtains the default value constraints information for the named table. | yii\db\ConstraintFinderTrait
getTableForeignKeys() | Obtains the foreign keys information for the named table. | yii\db\ConstraintFinderTrait
getTableIndexes() | Obtains the indexes information for the named table. | yii\db\ConstraintFinderTrait
getTableNames() | Returns all table names in the database. | yii\db\Schema
getTablePrimaryKey() | Obtains the primary key for the named table. | yii\db\ConstraintFinderTrait
getTableSchema() | Obtains the metadata for the named table. | yii\db\Schema
getTableSchemas() | Returns the metadata for all tables in the database. | yii\db\Schema
getTableUniques() | Obtains the unique constraints information for the named table. | yii\db\ConstraintFinderTrait
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\BaseObject
hasProperty() | Returns a value indicating whether a property is defined. | yii\base\BaseObject
init() | Initializes the object. | yii\base\BaseObject
insert() | Executes the INSERT command, returning primary key values. | yii\db\Schema
isReadQuery() | Returns a value indicating whether a SQL statement is for read purpose. | yii\db\Schema
quoteColumnName() | Quotes a column name for use in a query. | yii\db\Schema
quoteSimpleColumnName() | Quotes a simple column name for use in a query. | yii\db\Schema
quoteSimpleTableName() | Quotes a simple table name for use in a query. | yii\db\Schema
quoteTableName() | Quotes a table name for use in a query. | yii\db\Schema
quoteValue() | Quotes a string value for use in a query. | yii\db\Schema
refresh() | Refreshes the schema. | yii\db\Schema
refreshTableSchema() | Refreshes the particular table schema. | yii\db\Schema
releaseSavepoint() | Releases an existing savepoint. | yii\db\Schema
rollBackSavepoint() | Rolls back to a previously created savepoint. | yii\db\Schema
setTransactionIsolationLevel() | Sets the isolation level of the current transaction. | yii\db\sqlite\Schema
supportsSavepoint() |  | yii\db\Schema
unquoteSimpleColumnName() | Unquotes a simple column name. | yii\db\Schema
unquoteSimpleTableName() | Unquotes a simple table name. | yii\db\Schema

## Protected Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
createColumnSchema() | Creates a column schema for the database. | yii\db\Schema
findColumns() | Collects the table column metadata. | yii\db\sqlite\Schema
findConstraints() | Collects the foreign key column details for the given table. | yii\db\sqlite\Schema
findSchemaNames() | Returns all schema names in the database, including the default one but not system schemas. | yii\db\Schema
findTableNames() | Returns all table names in the database. | yii\db\sqlite\Schema
getCacheKey() | Returns the cache key for the specified table name. | yii\db\Schema
getCacheTag() | Returns the cache tag name. | yii\db\Schema
getColumnPhpType() | Extracts the PHP type from abstract DB type. | yii\db\Schema
getSchemaMetadata() | Returns the metadata of the given type for all tables in the given schema. | yii\db\ConstraintFinderTrait
getTableMetadata() | Returns the metadata of the given type for the given table. | yii\db\ConstraintFinderTrait
getTableNameParts() | Splits full table name into parts | yii\db\Schema
loadColumnSchema() | Loads the column information into a yii\db\ColumnSchema object. | yii\db\sqlite\Schema
loadTableChecks() |  | yii\db\sqlite\Schema
loadTableDefaultValues() |  | yii\db\sqlite\Schema
loadTableForeignKeys() |  | yii\db\sqlite\Schema
loadTableIndexes() |  | yii\db\sqlite\Schema
loadTablePrimaryKey() |  | yii\db\sqlite\Schema
loadTableSchema() | Loads the metadata for the specified table. | yii\db\sqlite\Schema
loadTableUniques() |  | yii\db\sqlite\Schema
normalizePdoRowKeyCase() | Changes row's array key case to lower if PDO's one is set to uppercase. | yii\db\Schema
resolveTableName() | Resolves the table name and schema name (if any). | yii\db\Schema
setTableMetadata() | Sets the metadata of the given type for the given table. | yii\db\Schema

## Constants

Hide inherited constants

Constant | Value | Description | Defined By
--- | --- | --- | ---
SCHEMA_CACHE_VERSION | 1 | Schema cache version, to detect incompatibilities in cached values when the data format of the cache changes. | 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

## Property Details

Hide inherited properties

$columnQuoteCharacter protected property (available since version 2.0.14)

Character used to quote column names. An array of 2 characters can be used in case starting and ending characters are different.

protected string|string[] $columnQuoteCharacter = '`'
$tableQuoteCharacter protected property (available since version 2.0.14)

Character used to quote schema, table, etc. names. An array of 2 characters can be used in case starting and ending characters are different.

protected string|string[] $tableQuoteCharacter = '`'
$transactionIsolationLevel public property

The transaction isolation level to use for this transaction. This can be either yii\db\Transaction::READ_UNCOMMITTED or yii\db\Transaction::SERIALIZABLE.

public string $transactionIsolationLevel = null
$typeMap public property

Mapping from physical column types (keys) to abstract column types (values)

public array $typeMap = [
'tinyint' => self::TYPE_TINYINT,
'bit' => self::TYPE_SMALLINT,
'boolean' => self::TYPE_BOOLEAN,
'bool' => self::TYPE_BOOLEAN,
'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,
'real' => self::TYPE_FLOAT,
'decimal' => self::TYPE_DECIMAL,
'numeric' => self::TYPE_DECIMAL,
'tinytext' => self::TYPE_TEXT,
'mediumtext' => self::TYPE_TEXT,
'longtext' => self::TYPE_TEXT,
'text' => self::TYPE_TEXT,
'varchar' => self::TYPE_STRING,
'string' => self::TYPE_STRING,
'char' => self::TYPE_CHAR,
'blob' => self::TYPE_BINARY,
'datetime' => self::TYPE_DATETIME,
'year' => self::TYPE_DATE,
'date' => self::TYPE_DATE,
'time' => self::TYPE_TIME,
'timestamp' => self::TYPE_TIMESTAMP,
'enum' => self::TYPE_STRING,
]

## Method Details

Hide inherited methods

__call() public method

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

Calls the named method which is not a class method.

Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.

public mixed __call ( $name, $params )
$name | string | The method name
$params | array | Method parameters
return | mixed | The method return value
throws | yii\base\UnknownMethodException | when calling unknown method

Source code

                    public function __call($name, $params)
    {
        throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
    }

__construct() public method

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

Constructor.

The default implementation does two things:

- Initializes the object with the given configuration `$config`.
- Call init().

If this method is overridden in a child class, it is recommended that

- the last parameter of the constructor is a configuration array, like `$config` here.
- call the parent implementation at the end of the constructor.

public void __construct ( $config = [] )
$config | array | Name-value pairs that will be used to initialize the object properties

Source code

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

__get() public method

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

Returns the value of an object property.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `$value = $object->property;`.

See also __set().

public mixed __get ( $name )
$name | string | The property name
return | mixed | The property value
throws | yii\base\UnknownPropertyException | if the property is not defined
throws | yii\base\InvalidCallException | if the property is write-only

Source code

                    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 method

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

Checks if a property is set, i.e. defined and not null.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `isset($object->property)`.

Note that if the property is not defined, false will be returned.

See also https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$name | string | The property name or the event name
return | boolean | Whether the named property is set (not null).

Source code

                    public function __isset($name)
    {
        $getter = 'get' . $name;
        if (method_exists($this, $getter)) {
            return $this->$getter() !== null;
        }
        return false;
    }

__set() public method

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

Sets value of an object property.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `$object->property = $value;`.

See also __get().

public void __set ( $name, $value )
$name | string | The property name or the event name
$value | mixed | The property value
throws | yii\base\UnknownPropertyException | if the property is not defined
throws | yii\base\InvalidCallException | if the property is read-only

Source code

                    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 method

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

Sets an object property to null.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `unset($object->property)`.

Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.

See also https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name | string | The property name
throws | yii\base\InvalidCallException | if the property is read only.

Source code

                    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 method

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

Returns a value indicating whether a property can be read.

A property is readable if:

- the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when `$checkVars` is true);

See also canSetProperty().

public boolean canGetProperty ( $name, $checkVars = true )
$name | string | The property name
$checkVars | boolean | Whether to treat member variables as properties
return | boolean | Whether the property can be read

Source code

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

canSetProperty() public method

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

Returns a value indicating whether a property can be set.

A property is writable if:

- the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when `$checkVars` is true);

See also canGetProperty().

public boolean canSetProperty ( $name, $checkVars = true )
$name | string | The property name
$checkVars | boolean | Whether to treat member variables as properties
return | boolean | Whether the property can be written

Source code

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

className() public static method
Deprecated since 2.0.14. On PHP >=5.5, use `::class` instead.

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

Returns the fully qualified name of this class.

public static string className ( )
return | string | The fully qualified name of this class.

Source code

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

convertException() public method

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

Converts a DB exception to a more concrete one if possible.

public yii\db\Exception convertException ( Exception $e, $rawSql )
$e | Exception |
$rawSql | string | SQL that produced exception

Source code

                    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 method

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

Creates a column schema for the database.

This method may be overridden by child classes to create a DBMS-specific column schema.

protected yii\db\ColumnSchema createColumnSchema ( )
return | yii\db\ColumnSchema | Column schema instance.
throws | yii\base\InvalidConfigException | if a column schema class cannot be created.

Source code

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

createColumnSchemaBuilder() public method (available since version 2.0.6)

Create a column schema builder instance giving the type and value precision.

This method may be overridden by child classes to create a DBMS-specific column schema builder.

public yii\db\sqlite\ColumnSchemaBuilder createColumnSchemaBuilder ( $type, $length = null )
$type | string | Type of the column. See yii\db\sqlite\ColumnSchemaBuilder::$type.
$length | integer|string|array|null | Length or precision of the column. See yii\db\sqlite\ColumnSchemaBuilder::$length.
return | yii\db\sqlite\ColumnSchemaBuilder | Column schema builder instance

Source code

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

createQueryBuilder() public method

Creates a query builder for the MySQL database.

This method may be overridden by child classes to create a DBMS-specific query builder.

public yii\db\sqlite\QueryBuilder createQueryBuilder ( )
return | yii\db\sqlite\QueryBuilder | Query builder instance

Source code

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

createSavepoint() public method

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

Creates a new savepoint.

public void createSavepoint ( $name )
$name | string | The savepoint name

Source code

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

findColumns() protected method

Collects the table column metadata.

protected boolean findColumns ( $table )
$table | yii\db\TableSchema | The table metadata
return | boolean | Whether the table exists in the database

Source code

                    protected function findColumns($table)
    {
        $sql = 'PRAGMA table_info(' . $this->quoteSimpleTableName($table->name) . ')';
        $columns = $this->db->createCommand($sql)->queryAll();
        if (empty($columns)) {
            return false;
        }
        foreach ($columns as $info) {
            $column = $this->loadColumnSchema($info);
            $table->columns[$column->name] = $column;
            if ($column->isPrimaryKey) {
                $table->primaryKey[] = $column->name;
            }
        }
        if (count($table->primaryKey) === 1 && !strncasecmp($table->columns[$table->primaryKey[0]]->dbType, 'int', 3)) {
            $table->sequenceName = '';
            $table->columns[$table->primaryKey[0]]->autoIncrement = true;
        }
        return true;
    }

findConstraints() protected method

Collects the foreign key column details for the given table.

protected void findConstraints ( $table )
$table | yii\db\TableSchema | The table metadata

Source code

                    protected function findConstraints($table)
    {
        $sql = 'PRAGMA foreign_key_list(' . $this->quoteSimpleTableName($table->name) . ')';
        $keys = $this->db->createCommand($sql)->queryAll();
        foreach ($keys as $key) {
            $id = (int) $key['id'];
            if (!isset($table->foreignKeys[$id])) {
                $table->foreignKeys[$id] = [$key['table'], $key['from'] => $key['to']];
            } else {
                // composite FK
                $table->foreignKeys[$id][$key['from']] = $key['to'];
            }
        }
    }

findSchemaNames() protected method (available since version 2.0.4)

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

Returns all schema names in the database, including the default one but not system schemas.

This method should be overridden by child classes in order to support this feature because the default implementation simply throws an exception.

protected array findSchemaNames ( )
return | array | All schema names in the database, except system schemas.
throws | yii\base\NotSupportedException | if this method is not supported by the DBMS.

Source code

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

findTableNames() protected method

Returns all table names in the database.

This method should be overridden by child classes in order to support this feature because the default implementation simply throws an exception.

protected array findTableNames ( $schema = '' )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema.
return | array | All table names in the database. The names have NO schema name prefix.
throws | yii\base\NotSupportedException | if this method is not supported by the DBMS.

Source code

                    protected function findTableNames($schema = '')
    {
        $sql = "SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence' ORDER BY tbl_name";
        return $this->db->createCommand($sql)->queryColumn();
    }

findUniqueIndexes() public method

Returns all unique indexes for the given table.

Each array element is of the following structure:

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

public array findUniqueIndexes ( $table )
$table | yii\db\TableSchema | The table metadata
return | array | All unique indexes for the given table.

Source code

                    public function findUniqueIndexes($table)
    {
        $sql = 'PRAGMA index_list(' . $this->quoteSimpleTableName($table->name) . ')';
        $indexes = $this->db->createCommand($sql)->queryAll();
        $uniqueIndexes = [];
        foreach ($indexes as $index) {
            $indexName = $index['name'];
            $indexInfo = $this->db->createCommand('PRAGMA index_info(' . $this->quoteValue($index['name']) . ')')->queryAll();
            if ($index['unique']) {
                $uniqueIndexes[$indexName] = [];
                foreach ($indexInfo as $row) {
                    $uniqueIndexes[$indexName][] = $row['name'];
                }
            }
        }
        return $uniqueIndexes;
    }

getCacheKey() protected method

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

Returns the cache key for the specified table name.

protected mixed getCacheKey ( $name )
$name | string | The table name.
return | mixed | The cache key.

Source code

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

getCacheTag() protected method

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

Returns the cache tag name.

This allows refresh() to invalidate all cached table schemas.

protected string getCacheTag ( )
return | string | The cache tag name

Source code

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

getColumnPhpType() protected method

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

Extracts the PHP type from abstract DB type.

protected string getColumnPhpType ( $column )
$column | yii\db\ColumnSchema | The column schema information
return | string | PHP type name

Source code

                    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 method

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

Returns the ID of the last inserted row or sequence value.

See also https://www.php.net/manual/en/function.PDO-lastInsertId.php.

public string getLastInsertID ( $sequenceName = '' )
$sequenceName | string | Name of the sequence object (required by some DBMS)
return | string | The row ID of the last row inserted, or the last value retrieved from the sequence object
throws | yii\base\InvalidCallException | if the DB connection is not active

Source code

                    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 method

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

Determines the PDO type for the given PHP data value.

See also https://www.php.net/manual/en/pdo.constants.php.

public integer getPdoType ( $data )
$data | mixed | The data whose PDO type is to be determined
return | integer | The PDO type

Source code

                    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 method

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

public yii\db\QueryBuilder getQueryBuilder ( )
return | yii\db\QueryBuilder | The query builder for this connection.

Source code

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

getRawTableName() public method

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

Returns the actual name of a given table name.

This method will strip off curly brackets from the given table name and replace the percentage character '%' with yii\db\Connection::$tablePrefix.

public string getRawTableName ( $name )
$name | string | The table name to be converted
return | string | The real name of the given table name

Source code

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

getSchemaChecks() public method

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

Returns check constraints for all tables in the database.

public \yii\db\CheckConstraint[][] getSchemaChecks ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is false, cached data may be returned if available.
return | \yii\db\CheckConstraint[][] | Check constraints for all tables in the database. Each array element is an array of yii\db\CheckConstraint or its child classes.

Source code

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

getSchemaDefaultValues() public method

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

Returns default value constraints for all tables in the database.

public yii\db\DefaultValueConstraint[] getSchemaDefaultValues ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is false, cached data may be returned if available.
return | yii\db\DefaultValueConstraint[] | Default value constraints for all tables in the database. Each array element is an array of yii\db\DefaultValueConstraint or its child classes.

Source code

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

getSchemaForeignKeys() public method

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

Returns foreign keys for all tables in the database.

public \yii\db\ForeignKeyConstraint[][] getSchemaForeignKeys ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is false, cached data may be returned if available.
return | \yii\db\ForeignKeyConstraint[][] | Foreign keys for all tables in the database. Each array element is an array of yii\db\ForeignKeyConstraint or its child classes.

Source code

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

getSchemaIndexes() public method

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

Returns indexes for all tables in the database.

public \yii\db\IndexConstraint[][] getSchemaIndexes ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is false, cached data may be returned if available.
return | \yii\db\IndexConstraint[][] | Indexes for all tables in the database. Each array element is an array of yii\db\IndexConstraint or its child classes.

Source code

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

getSchemaMetadata() protected abstract method

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

Returns the metadata of the given type for all tables in the given schema.

protected abstract array getSchemaMetadata ( $schema, $type, $refresh )
$schema | string | The schema of the metadata. Defaults to empty string, meaning the current or default schema name.
$type | string | Metadata type.
$refresh | boolean | Whether to fetch the latest available table metadata. If this is `false`, cached data may be returned if available.
return | array | Array of metadata.

Source code

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

getSchemaNames() public method (available since version 2.0.4)

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

Returns all schema names in the database, except system schemas.

public string[] getSchemaNames ( $refresh = false )
$refresh | boolean | Whether to fetch the latest available schema names. If this is false, schema names fetched previously (if available) will be returned.
return | string[] | All schema names in the database, except system schemas.

Source code

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

getSchemaPrimaryKeys() public method

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

Returns primary keys for all tables in the database.

public yii\db\Constraint[] getSchemaPrimaryKeys ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is `false`, cached data may be returned if available.
return | yii\db\Constraint[] | Primary keys for all tables in the database. Each array element is an instance of yii\db\Constraint or its child class.

Source code

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

getSchemaUniques() public method

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

Returns unique constraints for all tables in the database.

public \yii\db\Constraint[][] getSchemaUniques ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is false, cached data may be returned if available.
return | \yii\db\Constraint[][] | Unique constraints for all tables in the database. Each array element is an array of yii\db\Constraint or its child classes.

Source code

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

getServerVersion() public method (available since version 2.0.14)

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

Returns a server version as a string comparable by \version_compare().

public string getServerVersion ( )
return | string | Server version as a string.

Source code

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

getTableChecks() public method

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

Obtains the check constraints information for the named table.

public yii\db\CheckConstraint[] getTableChecks ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the information even if it is found in the cache.
return | yii\db\CheckConstraint[] | Table check constraints.

Source code

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

getTableDefaultValues() public method

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

Obtains the default value constraints information for the named table.

public yii\db\DefaultValueConstraint[] getTableDefaultValues ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the information even if it is found in the cache.
return | yii\db\DefaultValueConstraint[] | Table default value constraints.

Source code

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

getTableForeignKeys() public method

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

Obtains the foreign keys information for the named table.

public yii\db\ForeignKeyConstraint[] getTableForeignKeys ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the information even if it is found in the cache.
return | yii\db\ForeignKeyConstraint[] | Table foreign keys.

Source code

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

getTableIndexes() public method

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

Obtains the indexes information for the named table.

public yii\db\IndexConstraint[] getTableIndexes ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the information even if it is found in the cache.
return | yii\db\IndexConstraint[] | Table indexes.

Source code

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

getTableMetadata() protected abstract method

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

Returns the metadata of the given type for the given table.

protected abstract mixed getTableMetadata ( $name, $type, $refresh )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$type | string | Metadata type.
$refresh | boolean | Whether to reload the table metadata even if it is found in the cache.
return | mixed | Metadata.

Source code

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

getTableNameParts() protected method (available since version 2.0.22)

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

Splits full table name into parts

protected array getTableNameParts ( $name )
$name | string |

Source code

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

getTableNames() public method

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

Returns all table names in the database.

public string[] getTableNames ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name. If not empty, the returned table names will be prefixed with the schema name.
$refresh | boolean | Whether to fetch the latest available table names. If this is false, table names fetched previously (if available) will be returned.
return | string[] | All table names in the database.

Source code

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

getTablePrimaryKey() public method

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

Obtains the primary key for the named table.

public yii\db\Constraint|null getTablePrimaryKey ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the information even if it is found in the cache.
return | yii\db\Constraint|null | Table primary key, `null` if the table has no primary key.

Source code

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

getTableSchema() public method

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

Obtains the metadata for the named table.

public yii\db\TableSchema|null getTableSchema ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the table schema even if it is found in the cache.
return | yii\db\TableSchema|null | Table metadata. `null` if the named table does not exist.

Source code

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

getTableSchemas() public method

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

Returns the metadata for all tables in the database.

public yii\db\TableSchema[] getTableSchemas ( $schema = '', $refresh = false )
$schema | string | The schema of the tables. Defaults to empty string, meaning the current or default schema name.
$refresh | boolean | Whether to fetch the latest available table schemas. If this is `false`, cached data may be returned if available.
return | yii\db\TableSchema[] | The metadata for all tables in the database. Each array element is an instance of yii\db\TableSchema or its child class.

Source code

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

getTableUniques() public method

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

Obtains the unique constraints information for the named table.

public yii\db\Constraint[] getTableUniques ( $name, $refresh = false )
$name | string | Table name. The table name may contain schema name if any. Do not quote the table name.
$refresh | boolean | Whether to reload the information even if it is found in the cache.
return | yii\db\Constraint[] | Table unique constraints.

Source code

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

hasMethod() public method

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

Returns a value indicating whether a method is defined.

The default implementation is a call to php function `method_exists()`. You may override this method when you implemented the php magic method `__call()`.

public boolean hasMethod ( $name )
$name | string | The method name
return | boolean | Whether the method is defined

Source code

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

hasProperty() public method

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

Returns a value indicating whether a property is defined.

A property is defined if:

- the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when `$checkVars` is true);

See also:

- canGetProperty()
- canSetProperty()

public boolean hasProperty ( $name, $checkVars = true )
$name | string | The property name
$checkVars | boolean | Whether to treat member variables as properties
return | boolean | Whether the property is defined

Source code

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

init() public method

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

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public void init ( )

Source code

                    public function init()
    {
    }

insert() public method (available since version 2.0.4)

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

Executes the INSERT command, returning primary key values.

public array|false insert ( $table, $columns )
$table | string | The table that new rows will be inserted into.
$columns | array | The column data (name => value) to be inserted into the table.
return | array|false | Primary key values or false if the command fails

Source code

                    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 method

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

Returns a value indicating whether a SQL statement is for read purpose.

public boolean isReadQuery ( $sql )
$sql | string | The SQL statement
return | boolean | Whether a SQL statement is for read purpose.

Source code

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

loadColumnSchema() protected method

Loads the column information into a yii\db\ColumnSchema object.

protected yii\db\ColumnSchema loadColumnSchema ( $info )
$info | array | Column information
return | yii\db\ColumnSchema | The column schema object

Source code

                    protected function loadColumnSchema($info)
    {
        $column = $this->createColumnSchema();
        $column->name = $info['name'];
        $column->allowNull = !$info['notnull'];
        $column->isPrimaryKey = $info['pk'] != 0;
        $column->dbType = strtolower($info['type']);
        $column->unsigned = strpos($column->dbType, 'unsigned') !== false;
        $column->type = self::TYPE_STRING;
        if (preg_match('/^(\w+)(?:\(([^\)]+)\))?/', $column->dbType, $matches)) {
            $type = strtolower($matches[1]);
            if (isset($this->typeMap[$type])) {
                $column->type = $this->typeMap[$type];
            }
            if (!empty($matches[2])) {
                $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 === 'tinyint' || $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) {
            if ($info['dflt_value'] === 'null' || $info['dflt_value'] === '' || $info['dflt_value'] === null) {
                $column->defaultValue = null;
            } elseif ($column->type === 'timestamp' && $info['dflt_value'] === 'CURRENT_TIMESTAMP') {
                $column->defaultValue = new Expression('CURRENT_TIMESTAMP');
            } else {
                $value = trim($info['dflt_value'], "'\"");
                $column->defaultValue = $column->phpTypecast($value);
            }
        }
        return $column;
    }

loadTableChecks() protected method

protected void loadTableChecks ( $tableName )
$tableName |  |

Source code

                    protected function loadTableChecks($tableName)
    {
        $sql = $this->db->createCommand('SELECT `sql` FROM `sqlite_master` WHERE name = :tableName', [
            ':tableName' => $tableName,
        ])->queryScalar();
        /** @var $code SqlToken[]|SqlToken[][]|SqlToken[][][] */
        $code = (new SqlTokenizer($sql))->tokenize();
        $pattern = (new SqlTokenizer('any CREATE any TABLE any()'))->tokenize();
        if (!$code[0]->matches($pattern, 0, $firstMatchIndex, $lastMatchIndex)) {
            return [];
        }
        $createTableToken = $code[0][$lastMatchIndex - 1];
        $result = [];
        $offset = 0;
        while (true) {
            $pattern = (new SqlTokenizer('any CHECK()'))->tokenize();
            if (!$createTableToken->matches($pattern, $offset, $firstMatchIndex, $offset)) {
                break;
            }
            $checkSql = $createTableToken[$offset - 1]->getSql();
            $name = null;
            $pattern = (new SqlTokenizer('CONSTRAINT any'))->tokenize();
            if (isset($createTableToken[$firstMatchIndex - 2]) && $createTableToken->matches($pattern, $firstMatchIndex - 2)) {
                $name = $createTableToken[$firstMatchIndex - 1]->content;
            }
            $result[] = new CheckConstraint([
                'name' => $name,
                'expression' => $checkSql,
            ]);
        }
        return $result;
    }

loadTableDefaultValues() protected method

protected void loadTableDefaultValues ( $tableName )
$tableName |  |
throws | yii\base\NotSupportedException | if this method is called.

Source code

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

loadTableForeignKeys() protected method

protected void loadTableForeignKeys ( $tableName )
$tableName |  |

Source code

                    protected function loadTableForeignKeys($tableName)
    {
        $foreignKeys = $this->db->createCommand('PRAGMA FOREIGN_KEY_LIST (' . $this->quoteValue($tableName) . ')')->queryAll();
        $foreignKeys = $this->normalizePdoRowKeyCase($foreignKeys, true);
        $foreignKeys = ArrayHelper::index($foreignKeys, null, 'table');
        ArrayHelper::multisort($foreignKeys, 'seq', SORT_ASC, SORT_NUMERIC);
        $result = [];
        foreach ($foreignKeys as $table => $foreignKey) {
            $result[] = new ForeignKeyConstraint([
                'columnNames' => ArrayHelper::getColumn($foreignKey, 'from'),
                'foreignTableName' => $table,
                'foreignColumnNames' => ArrayHelper::getColumn($foreignKey, 'to'),
                'onDelete' => isset($foreignKey[0]['on_delete']) ? $foreignKey[0]['on_delete'] : null,
                'onUpdate' => isset($foreignKey[0]['on_update']) ? $foreignKey[0]['on_update'] : null,
            ]);
        }
        return $result;
    }

loadTableIndexes() protected method

protected void loadTableIndexes ( $tableName )
$tableName |  |

Source code

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

loadTablePrimaryKey() protected method

protected void loadTablePrimaryKey ( $tableName )
$tableName |  |

Source code

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

loadTableSchema() protected method

Loads the metadata for the specified table.

protected yii\db\TableSchema|null loadTableSchema ( $name )
$name | string | Table name
return | yii\db\TableSchema|null | DBMS-dependent table metadata, `null` if the table does not exist.

Source code

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

loadTableUniques() protected method

protected void loadTableUniques ( $tableName )
$tableName |  |

Source code

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

normalizePdoRowKeyCase() protected method (available since version 2.0.13)

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

Changes row's array key case to lower if PDO's one is set to uppercase.

protected array normalizePdoRowKeyCase ( array $row, $multiple )
$row | array | Row's array or an array of row's arrays.
$multiple | boolean | Whether multiple rows or a single row passed.
return | array | Normalized row or rows.

Source code

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

quoteColumnName() public method

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

Quotes a column name for use in a query.

If the column name contains prefix, the prefix will also be properly quoted. If the column name is already quoted or contains '(', '[[' or '{{', then this method will do nothing.

See also quoteSimpleColumnName().

public string quoteColumnName ( $name )
$name | string | Column name
return | string | The properly quoted column name

Source code

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

quoteSimpleColumnName() public method

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

Quotes a simple column name for use in a query.

A simple column name should contain the column name only without any prefix. If the column name is already quoted or is the asterisk character '*', this method will do nothing.

public string quoteSimpleColumnName ( $name )
$name | string | Column name
return | string | The properly quoted column name

Source code

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

quoteSimpleTableName() public method

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

Quotes a simple table name for use in a query.

A simple table name should contain the table name only without any schema prefix. If the table name is already quoted, this method will do nothing.

public string quoteSimpleTableName ( $name )
$name | string | Table name
return | string | The properly quoted table name

Source code

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

quoteTableName() public method

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

Quotes a table name for use in a query.

If the table name contains schema prefix, the prefix will also be properly quoted. If the table name is already quoted or contains '(' or '{{', then this method will do nothing.

See also quoteSimpleTableName().

public string quoteTableName ( $name )
$name | string | Table name
return | string | The properly quoted table name

Source code

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

quoteValue() public method

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

Quotes a string value for use in a query.

Note that if the parameter is not a string, it will be returned without change.

See also https://www.php.net/manual/en/function.PDO-quote.php.

public string quoteValue ( $str )
$str | string | String to be quoted
return | string | The properly quoted string

Source code

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

refresh() public method

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

Refreshes the schema.

This method cleans up all cached table schemas so that they can be re-created later to reflect the database schema change.

public void refresh ( )

Source code

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

refreshTableSchema() public method (available since version 2.0.6)

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

Refreshes the particular table schema.

This method cleans up cached table schema so that it can be re-created later to reflect the database schema change.

public void refreshTableSchema ( $name )
$name | string | Table name.

Source code

                    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 method

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

Releases an existing savepoint.

public void releaseSavepoint ( $name )
$name | string | The savepoint name

Source code

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

resolveTableName() protected method (available since version 2.0.13)

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

Resolves the table name and schema name (if any).

protected yii\db\TableSchema resolveTableName ( $name )
$name | string | The table name
return | yii\db\TableSchema | yii\db\TableSchema with resolved table, schema, etc. names.
throws | yii\base\NotSupportedException | if this method is not supported by the DBMS.

Source code

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

rollBackSavepoint() public method

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

Rolls back to a previously created savepoint.

public void rollBackSavepoint ( $name )
$name | string | The savepoint name

Source code

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

setTableMetadata() protected method (available since version 2.0.13)

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

Sets the metadata of the given type for the given table.

protected void setTableMetadata ( $name, $type, $data )
$name | string | Table name.
$type | string | Metadata type.
$data | mixed | Metadata.

Source code

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

setTransactionIsolationLevel() public method

Sets the isolation level of the current transaction.

See also https://www.sqlite.org/pragma.html#pragma_read_uncommitted.

public void setTransactionIsolationLevel ( $level )
$level | string | The transaction isolation level to use for this transaction. This can be either yii\db\Transaction::READ_UNCOMMITTED or yii\db\Transaction::SERIALIZABLE.
throws | yii\base\NotSupportedException | when unsupported isolation levels are used. SQLite only supports SERIALIZABLE and READ UNCOMMITTED.

Source code

                    public function setTransactionIsolationLevel($level)
    {
        switch ($level) {
            case Transaction::SERIALIZABLE:
                $this->db->createCommand('PRAGMA read_uncommitted = False;')->execute();
                break;
            case Transaction::READ_UNCOMMITTED:
                $this->db->createCommand('PRAGMA read_uncommitted = True;')->execute();
                break;
            default:
                throw new NotSupportedException(get_class($this) . ' only supports transaction isolation levels READ UNCOMMITTED and SERIALIZABLE.');
        }
    }

supportsSavepoint() public method

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

public boolean supportsSavepoint ( )
return | boolean | Whether this DBMS supports savepoint.

Source code

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

unquoteSimpleColumnName() public method (available since version 2.0.14)

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

Unquotes a simple column name.

A simple column name should contain the column name only without any prefix. If the column name is not quoted or is the asterisk character '*', this method will do nothing.

public string unquoteSimpleColumnName ( $name )
$name | string | Column name.
return | string | Unquoted column name.

Source code

                    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 method (available since version 2.0.14)

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

Unquotes a simple table name.

A simple table name should contain the table name only without any schema prefix. If the table name is not quoted, this method will do nothing.

public string unquoteSimpleTableName ( $name )
$name | string | Table name.
return | string | Unquoted table name.

Source code

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