Spec-Zone.ru › Yii 1.1

CDbSchema

Пакет system.db.schema
Наследование абстрактный класс CDbSchema » CComponent
Подклассы CCubridSchema, CMssqlSchema, CMysqlSchema, COciSchema, CPgsqlSchema, CSqliteSchema
С момента 1.0
Исходный код framework/db/schema/CDbSchema.php
CDbSchema — базовый класс для получения метаданных.

Общедоступные свойства

Свойство Тип Описание Определено
columnTypes массив абстрактные типы столбцов, сопоставленные с физическими типами столбцов. CDbSchema
commandBuilder CDbCommandBuilder генератор SQL-команд для этого соединения. CDbSchema
dbConnection CDbConnection соединение с базой данных. CDbSchema
tableNames массив Возвращает все имена таблиц в базе данных. CDbSchema
tables массив Возвращает метаданные для всех таблиц в базе данных. CDbSchema

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CDbSchema
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
addColumn() Создаёт SQL-запрос для добавления нового столбца БД. CDbSchema
addForeignKey() Создаёт SQL-запрос для добавления ограничения внешнего ключа к существующей таблице. CDbSchema
addPrimaryKey() Создаёт SQL-запрос для добавления ограничения первичного ключа к существующей таблице. CDbSchema
alterColumn() Создаёт SQL-запрос для изменения определения столбца. CDbSchema
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
checkIntegrity() Включает или выключает проверку целостности. CDbSchema
compareTableNames() Сравнивает два имени таблиц. CDbSchema
createIndex() Создаёт SQL-запрос для создания нового индекса. CDbSchema
createTable() Создаёт SQL-запрос для создания новой таблицы БД. CDbSchema
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик событий. CComponent
disableBehavior() Отключает прикреплённое поведение. CComponent
disableBehaviors() Отключает все прикреплённые поведения этого компонента. CComponent
dropColumn() Создаёт SQL-запрос для удаления столбца БД. CDbSchema
dropForeignKey() Создаёт SQL-запрос для удаления ограничения внешнего ключа. CDbSchema
dropIndex() Создаёт SQL-запрос для удаления индекса. CDbSchema
dropPrimaryKey() Создаёт SQL-запрос для удаления ограничения первичного ключа существующей таблицы. CDbSchema
dropTable() Создаёт SQL-запрос для удаления таблицы БД. CDbSchema
enableBehavior() Включает прикреплённое поведение. CComponent
enableBehaviors() Включает все прикреплённые поведения этого компонента. CComponent
evaluateExpression() Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. CComponent
getColumnType() Преобразует абстрактный тип столбца в физический тип столбца. CDbSchema
getCommandBuilder() Возвращает билдер SQL-команд для этого соединения. CDbSchema
getDbConnection() Возвращает соединение с базой данных. Соединение активно. CDbSchema
getEventHandlers() Возвращает список прикреплённых обработчиков событий для события. CComponent
getTable() Получает метаданные для указанной таблицы. CDbSchema
getTableNames() Возвращает все имена таблиц в базе данных. CDbSchema
getTables() Возвращает метаданные для всех таблиц в базе данных. CDbSchema
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики для заданного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
quoteColumnName() Заменяет имя столбца кавычками для использования в запросе. CDbSchema
quoteSimpleColumnName() Заменяет простое имя столбца кавычками для использования в запросе. CDbSchema
quoteSimpleTableName() Заменяет простое имя таблицы кавычками для использования в запросе. CDbSchema
quoteTableName() Заменяет имя таблицы кавычками для использования в запросе. CDbSchema
raiseEvent() Вызывает событие. CComponent
refresh() Обновляет схему. CDbSchema
renameColumn() Создаёт SQL-запрос для переименования столбца. CDbSchema
renameTable() Создаёт SQL-запрос для переименования таблицы БД. CDbSchema
resetSequence() Сбрасывает значение последовательности первичного ключа таблицы. CDbSchema
truncateTable() Создаёт SQL-запрос для усечения таблицы БД. CDbSchema

Защищённые методы

Метод Описание Определено в
createCommandBuilder() Создаёт билдер команд для базы данных. CDbSchema
findTableNames() Возвращает все имена таблиц в базе данных. CDbSchema
loadTable() Загружает метаданные для указанной таблицы. CDbSchema

Подробности свойств

columnTypes свойство (доступно с версии 1.1.6)

public array $columnTypes;

абстрактные типы столбцов, сопоставленные с физическими типами столбцов.

commandBuilder свойство только для чтения

public CDbCommandBuilder getCommandBuilder()

SQL-билдер команд для этого соединения.

dbConnection свойство только для чтения

public CDbConnection getDbConnection()

соединение с базой данных. Соединение активно.

свойство tableNames только для чтения

public array getTableNames(string $schema='')

Возвращает все имена таблиц в базе данных.

свойство tables только для чтения

public array getTables(string $schema='')

Возвращает метаданные для всех таблиц в базе данных.

Подробное описание методов

__construct() метод

public void __construct(CDbConnection $conn)
$conn CDbConnection соединение с базой данных.
Исходный код: framework/db/schema/CDbSchema.php#50 (показать)
public function __construct($conn)
{
    
$this->_connection=$conn;
    foreach(
$conn->schemaCachingExclude as $name)
        
$this->_cacheExclude[$name]=true;
}

Конструктор.

addColumn() метод (доступен начиная с версии v1.1.6)

public string addColumn(string $table, string $column, string $type)
$table string таблица, к которой будет добавлена новая колонка. Имя таблицы будет должным образом обрамлено кавычками методом.
$column string имя новой колонки. Имя будет должным образом обрамлено кавычками методом.
$type string тип колонки. Метод getColumnType будет вызван для преобразования абстрактного типа колонки (если таковой имеется) в физический. Всё, что не распознаётся как абстрактный тип, будет сохранено в сгенерированном SQL. Например, 'string' преобразуется в 'varchar(255)', а 'string not null' станет 'varchar(255) not null'.
{return} string SQL-запрос для добавления новой колонки.
Исходный код: framework/db/schema/CDbSchema.php#429 (показать)
public function addColumn($table,$column,$type)
{
    return 
'ALTER TABLE ' . $this->quoteTableName($table)
        . 
' ADD ' . $this->quoteColumnName($column) . ' '
        
. $this->getColumnType($type);
}

Строит SQL-запрос для добавления новой колонки в базу данных.

addForeignKey() метод (доступен начиная с версии v1.1.6)

public string addForeignKey(string $name, string $table, string|array $columns, string $refTable, string|array $refColumns, string $delete=NULL, string $update=NULL)
$name string имя внешнего ключа.
$table string таблица, к которой будет добавлен внешний ключ.
$columns string|array имя колонки, к которой будет добавлен ограничение. Если есть несколько колонок, разделяйте их запятыми или передайте как массив имён колонок.
$refTable string таблица, к которой ссылается внешний ключ.
$refColumns string|array имя колонки, к которой ссылается внешний ключ. Если есть несколько колонок, разделяйте их запятыми или передайте как массив имён колонок.
$delete string опция ON DELETE. Большинство СУБД поддерживают эти опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL
$update string опция ON UPDATE. Большинство СУБД поддерживают эти опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL
{return} string SQL-запрос для добавления ограничения внешнего ключа к существующей таблице.
Исходный код: framework/db/schema/CDbSchema.php#495 (показать)
public function addForeignKey($name,$table,$columns,$refTable,$refColumns,$delete=null,$update=null)
{
    if(
is_string($columns))
        
$columns=preg_split('/\s*,\s*/',$columns,-1,PREG_SPLIT_NO_EMPTY);
    foreach(
$columns as $i=>$col)
        
$columns[$i]=$this->quoteColumnName($col);
    if(
is_string($refColumns))
        
$refColumns=preg_split('/\s*,\s*/',$refColumns,-1,PREG_SPLIT_NO_EMPTY);
    foreach(
$refColumns as $i=>$col)
        
$refColumns[$i]=$this->quoteColumnName($col);
    
$sql='ALTER TABLE '.$this->quoteTableName($table)
        .
' ADD CONSTRAINT '.$this->quoteColumnName($name)
        .
' FOREIGN KEY ('.implode(', ',$columns).')'
        
.' REFERENCES '.$this->quoteTableName($refTable)
        .
' ('.implode(', ',$refColumns).')';
    if(
$delete!==null)
        
$sql.=' ON DELETE '.$delete;
    if(
$update!==null)
        
$sql.=' ON UPDATE '.$update;
    return 
$sql;
}

Строит SQL-запрос для добавления ограничения внешнего ключа к существующей таблице. Метод должным образом обрамляет кавычками имена таблиц и колонок.

addPrimaryKey() метод (доступен начиная с версии v1.1.13)

public string addPrimaryKey(string $name, string $table, string|array $columns)
$name string имя ограничения первичного ключа.
$table string таблица, к которой будет добавлено ограничение первичного ключа.
$columns string|array строка, разделенная запятыми, или массив колонок, из которых будет состоять первичный ключ. Массивы доступны с версии 1.1.14.
{return} string SQL-запрос для добавления ограничения первичного ключа к существующей таблице.
Исходный код: framework/db/schema/CDbSchema.php#578 (показать)
public function addPrimaryKey($name,$table,$columns)
{
    if(
is_string($columns))
        
$columns=preg_split('/\s*,\s*/',$columns,-1,PREG_SPLIT_NO_EMPTY);
    foreach(
$columns as $i=>$col)
        
$columns[$i]=$this->quoteColumnName($col);
    return 
'ALTER TABLE ' . $this->quoteTableName($table) . ' ADD CONSTRAINT '
        
. $this->quoteColumnName($name) . '  PRIMARY KEY ('
        
. implode(', ',$columns). ' )';
}

Строит SQL-запрос для добавления ограничения первичного ключа к существующей таблице.

alterColumn() метод (доступен начиная с версии v1.1.6)

public string alterColumn(string $table, string $column, string $type)
$table string таблица, колонка которой будет изменена. Имя таблицы будет должным образом обрамлено кавычками методом.
$column string имя колонки, которая будет изменена. Имя будет должным образом обрамлено кавычками методом.
$type string новый тип колонки. Метод getColumnType будет вызван для преобразования абстрактного типа колонки (если таковой имеется) в физический. Всё, что не распознаётся как абстрактный тип, будет сохранено в сгенерированном SQL. Например, 'string' преобразуется в 'varchar(255)', а 'string not null' станет 'varchar(255) not null'.
{return} string SQL-запрос для изменения определения колонки.
Исходный код: framework/db/schema/CDbSchema.php#474 (показать)
public function alterColumn($table,$column,$type)
{
    return 
'ALTER TABLE ' . $this->quoteTableName($table) . ' CHANGE '
        
. $this->quoteColumnName($column) . ' '
        
. $this->quoteColumnName($column) . ' '
        
. $this->getColumnType($type);
}

Строит SQL-запрос для изменения определения колонки.

checkIntegrity() метод (доступен начиная с версии v1.1)

public void checkIntegrity(boolean $check=true, string $schema='')
$check boolean включить или выключить проверку целостности.
$schema string схема таблиц. По умолчанию пустая строка, что означает текущую или по умолчанию схему.
Исходный код: framework/db/schema/CDbSchema.php#284 (показать)
public function checkIntegrity($check=true,$schema='')
{
}

Включает или выключает проверку целостности.

compareTableNames() метод

public boolean compareTableNames(string $name1, string $name2)
$name1 string имя таблицы 1
$name2 string имя таблицы 2
{return} boolean ссылки на две таблицы относятся к одной и той же таблице.
Исходный код: framework/db/schema/CDbSchema.php#246 (показать)
public function compareTableNames($name1,$name2)
{
    
$name1=str_replace(array('"','`',"'"),'',$name1);
    
$name2=str_replace(array('"','`',"'"),'',$name2);
    if((
$pos=strrpos($name1,'.'))!==false)
        
$name1=substr($name1,$pos+1);
    if((
$pos=strrpos($name2,'.'))!==false)
        
$name2=substr($name2,$pos+1);
    if(
$this->_connection->tablePrefix!==null)
    {
        if(
strpos($name1,'{')!==false)
            
$name1=$this->_connection->tablePrefix.str_replace(array('{','}'),'',$name1);
        if(
strpos($name2,'{')!==false)
            
$name2=$this->_connection->tablePrefix.str_replace(array('{','}'),'',$name2);
    }
    return 
$name1===$name2;
}

Сравнивает два имени таблиц. Имена таблиц могут быть обрамлены или не обрамлены кавычками. Этот метод учтёт оба случая.

createCommandBuilder() метод

protected CDbCommandBuilder createCommandBuilder()
{return} CDbCommandBuilder экземпляр билдера команд
Исходный код: framework/db/schema/CDbSchema.php#293 (показать)
protected function createCommandBuilder()
{
    return new 
CDbCommandBuilder($this);
}

Создаёт билдер команд для базы данных. Этот метод может быть переопределён дочерними классами для создания билдера команд, специфичного для СУБД.

createIndex() метод (доступен начиная с версии v1.1.6)

public string createIndex(string $name, string $table, string|array $columns, boolean $unique=false)
$name string имя индекса. Имя будет должным образом обрамлено кавычками методом.
$table string таблица, для которой будет создан новый индекс. Имя таблицы будет должным образом обрамлено кавычками методом.
$columns string|array колонка(и), которые должны быть включены в индекс. Если колонок несколько, их необходимо разделить запятыми или передать в виде массива имён колонок. Каждое имя колонки будет должным образом обрамлено кавычками методом, если в имени не встречаются скобки.
$unique boolean указывает, нужно ли добавить ограничение UNIQUE к созданному индексу.
{return} string SQL-запрос для создания нового индекса.
Исходный код: framework/db/schema/CDbSchema.php#540 (показать)
public function createIndex($name,$table,$columns,$unique=false)
{
    
$cols=array();
    if(
is_string($columns))
        
$columns=preg_split('/\s*,\s*/',$columns,-1,PREG_SPLIT_NO_EMPTY);
    foreach(
$columns as $col)
    {
        if(
strpos($col,'(')!==false)
            
$cols[]=$col;
        else
            
$cols[]=$this->quoteColumnName($col);
    }
    return (
$unique ? 'CREATE UNIQUE INDEX ' : 'CREATE INDEX ')
        . 
$this->quoteTableName($name).' ON '
        
. $this->quoteTableName($table).' ('.implode(', ',$cols).')';
}

Создаёт SQL-запрос для создания нового индекса.

createTable() метод (доступен начиная с v1.1.6)

public string createTable(string $table, array $columns, string $options=NULL)
$table string имя таблицы, которая должна быть создана. Имя будет должным образом обрамлено кавычками методом.
$columns array колонки (имя=>определение) в новой таблице.
$options string дополнительный фрагмент SQL, который будет добавлен к сгенерированному SQL-запросу.
{return} string SQL-запрос для создания новой таблицы БД.
Исходный код: framework/db/schema/CDbSchema.php#371 (показать)
public function createTable($table,$columns,$options=null)
{
    
$cols=array();
    foreach(
$columns as $name=>$type)
    {
        if(
is_string($name))
            
$cols[]="\t".$this->quoteColumnName($name).' '.$this->getColumnType($type);
        else
            
$cols[]="\t".$type;
    }
    
$sql="CREATE TABLE ".$this->quoteTableName($table)." (\n".implode(",\n",$cols)."\n)";
    return 
$options===null ? $sql : $sql.' '.$options;
}

Создаёт SQL-запрос для создания новой таблицы БД.

Колонки новой таблицы должны быть указаны в виде пар имя-определение (например, 'имя'=>'строка'), где имя представляет имя колонки, которое будет должным образом обрамлено кавычками методом, а определение — тип колонки, который может содержать абстрактный тип БД. Метод getColumnType будет вызван для преобразования любого абстрактного типа в физический.

Если колонка указана только с определением (например, 'PRIMARY KEY (имя, тип)'), она будет непосредственно вставлена в сгенерированный SQL.

dropColumn() метод (доступен начиная с v1.1.6)

public string dropColumn(string $table, string $column)
$table string таблица, из которой нужно удалить колонку. Имя будет должным образом обрамлено кавычками методом.
$column string имя колонки, которую нужно удалить. Имя будет должным образом обрамлено кавычками методом.
{return} string SQL-запрос для удаления колонки БД.
Исходный код: framework/db/schema/CDbSchema.php#443 (показать)
public function dropColumn($table,$column)
{
    return 
"ALTER TABLE ".$this->quoteTableName($table)
        .
" DROP COLUMN ".$this->quoteColumnName($column);
}

Создаёт SQL-запрос для удаления колонки БД.

dropForeignKey() метод (доступен начиная с v1.1.6)

public string dropForeignKey(string $name, string $table)
$name string имя ограничения внешнего ключа, которое нужно удалить. Имя будет должным образом обрамлено кавычками методом.
$table string таблица, из которой нужно удалить ограничение внешнего ключа. Имя будет должным образом обрамлено кавычками методом.
{return} string SQL-запрос для удаления ограничения внешнего ключа.
Исходный код: framework/db/schema/CDbSchema.php#524 (показать)
public function dropForeignKey($name,$table)
{
    return 
'ALTER TABLE '.$this->quoteTableName($table)
        .
' DROP CONSTRAINT '.$this->quoteColumnName($name);
}

Создаёт SQL-запрос для удаления ограничения внешнего ключа.

dropIndex() метод (доступен начиная с v1.1.6)

public string dropIndex(string $name, string $table)
$name string имя индекса, который нужно удалить. Имя будет должным образом обрамлено кавычками методом.
$table string таблица, из которой нужно удалить индекс. Имя будет должным образом обрамлено кавычками методом.
{return} string SQL-запрос для удаления индекса.
Исходный код: framework/db/schema/CDbSchema.php#564 (показать)
public function dropIndex($name,$table)
{
    return 
'DROP INDEX '.$this->quoteTableName($name).' ON '.$this->quoteTableName($table);
}

Создаёт SQL-запрос для удаления индекса.

dropPrimaryKey() метод (доступен начиная с v1.1.13)

public string dropPrimaryKey(string $name, string $table)
$name string имя ограничения первичного ключа, которое нужно удалить.
$table string таблица, из которой нужно удалить ограничение первичного ключа.
{return} string SQL-запрос для удаления ограничения первичного ключа из существующей таблицы.
Исходный код: framework/db/schema/CDbSchema.php#596 (показать)
public function dropPrimaryKey($name,$table)
{
    return 
'ALTER TABLE ' . $this->quoteTableName($table) . ' DROP CONSTRAINT '
        
. $this->quoteColumnName($name);
}

Создаёт SQL-запрос для удаления ограничения первичного ключа из существующей таблицы.

dropTable() метод (доступен начиная с v1.1.6)

public string dropTable(string $table)
$table string таблица, которую нужно удалить. Имя будет должным образом обрамлено кавычками методом.
{return} string SQL-запрос для удаления таблицы БД.
Исходный код: framework/db/schema/CDbSchema.php#403 (показать)
public function dropTable($table)
{
    return 
"DROP TABLE ".$this->quoteTableName($table);
}

Создаёт SQL-запрос для удаления таблицы БД.

findTableNames() метод

protected array findTableNames(string $schema='')
$schema string схема таблиц. По умолчанию пустая строка, означающая текущую или по умолчанию схему. Если не пустая, возвращаемые имена таблиц будут иметь префикс с именем схемы.
{return} array все имена таблиц в базе данных.
Исходный код: framework/db/schema/CDbSchema.php#307 (показать)
protected function findTableNames($schema='')
{
    throw new 
CDbException(Yii::t('yii','{class} does not support fetching all table names.',
        array(
'{class}'=>get_class($this))));
}

Возвращает все имена таблиц в базе данных. Этот метод должен быть переопределён дочерними классами для поддержки этой функции, так как по умолчанию он просто выбрасывает исключение.

getColumnType() метод (доступен начиная с v1.1.6)

public string getColumnType(string $type)
$type string абстрактный тип колонки
{return} string физический тип колонки.
Исходный код: framework/db/schema/CDbSchema.php#341 (показать)
public function getColumnType($type)
{
    if(isset(
$this->columnTypes[$type]))
        return 
$this->columnTypes[$type];
    elseif((
$pos=strpos($type,' '))!==false)
    {
        
$t=substr($type,0,$pos);
        return (isset(
$this->columnTypes[$t]) ? $this->columnTypes[$t] : $t).substr($type,$pos);
    }
    else
        return 
$type;
}

Преобразует абстрактный тип колонки в физический тип колонки. Преобразование выполняется с использованием карты типов, указанной в columnTypes. Эти абстрактные типы колонок поддерживаются (используя MySQL в качестве примера для объяснения соответствующих физических типов):

  • pk и bigpk: тип автоинкрементного первичного ключа, будет преобразован в «int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY» или «bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY»
  • string: строковый тип, будет преобразован в «varchar(255)»
  • text: тип длинной строки, будет преобразован в «text»
  • integer: целочисленный тип, будет преобразован в «int(11)»
  • bigint: целочисленный тип, будет преобразован в «bigint(20)»
  • boolean: булевый тип, будет преобразован в «tinyint(1)»
  • float: тип числа с плавающей запятой, будет преобразован в «float»
  • decimal: тип десятичного числа, будет преобразован в «decimal»
  • datetime: тип даты и времени, будет преобразован в «datetime»
  • timestamp: тип метки времени, будет преобразован в «timestamp»
  • time: тип времени, будет преобразован в «time»
  • date: тип даты, будет преобразован в «date»
  • binary: тип двоичных данных, будет преобразован в «blob»


Если абстрактный тип содержит две или более части, разделенные пробелами (например, «string NOT NULL»), то будет преобразована только первая часть, а остальные части будут добавлены к результату преобразования. Например, 'string NOT NULL' преобразуется в 'varchar(255) NOT NULL'.

getCommandBuilder() метод

public CDbCommandBuilder getCommandBuilder()
{return} CDbCommandBuilder построитель SQL-команд для этого подключения.
Исходный код: framework/db/schema/CDbSchema.php#146 (показать)
public function getCommandBuilder()
{
    if(
$this->_builder!==null)
        return 
$this->_builder;
    else
        return 
$this->_builder=$this->createCommandBuilder();
}

getDbConnection() метод

public CDbConnection getDbConnection()
{return} CDbConnection подключение к базе данных. Подключение активно.
Исходный код: framework/db/schema/CDbSchema.php#60 (показать)
public function getDbConnection()
{
    return 
$this->_connection;
}

getTable() метод

public CDbTableSchema getTable(string $name, boolean $refresh=false)
$name string имя таблицы
$refresh boolean необходимо ли обновить кэш схемы таблицы. Параметр доступен начиная с версии 1.1.9
{return} CDbTableSchema метаданные таблицы. Значение Null, если таблица с указанным именем не существует.
Исходный код: framework/db/schema/CDbSchema.php#72 (показать)
public function getTable($name,$refresh=false)
{
    if(
$refresh===false && isset($this->_tables[$name]))
        return 
$this->_tables[$name];
    else
    {
        if(
$this->_connection->tablePrefix!==null && strpos($name,'{{')!==false)
            
$realName=preg_replace('/\{\{(.*?)\}\}/',$this->_connection->tablePrefix.'$1',$name);
        else
            
$realName=$name;

        
// temporarily disable query caching
        
if($this->_connection->queryCachingDuration>0)
        {
            
$qcDuration=$this->_connection->queryCachingDuration;
            
$this->_connection->queryCachingDuration=0;
        }

        if(!isset(
$this->_cacheExclude[$name]) && ($duration=$this->_connection->schemaCachingDuration)>0 && $this->_connection->schemaCacheID!==false && ($cache=Yii::app()->getComponent($this->_connection->schemaCacheID))!==null)
        {
            
$key='yii:dbschema'.$this->_connection->connectionString.':'.$this->_connection->username.':'.$name;
            
$table=$cache->get($key);
            if(
$refresh===true || $table===false)
            {
                
$table=$this->loadTable($realName);
                if(
$table!==null)
                    
$cache->set($key,$table,$duration);
            }
            
$this->_tables[$name]=$table;
        }
        else
            
$this->_tables[$name]=$table=$this->loadTable($realName);

        if(isset(
$qcDuration))  // re-enable query caching
            
$this->_connection->queryCachingDuration=$qcDuration;

        return 
$table;
    }
}

Получает метаданные для указанной таблицы.

getTableNames() метод

public array getTableNames(string $schema='')
$schema string схема таблиц. По умолчанию пустая строка, что означает текущую или по умолчанию схему. Если не пустая, возвращаемые имена таблиц будут префиксрованы именем схемы.
{return} array все имена таблиц в базе данных.
Исходный код: framework/db/schema/CDbSchema.php#136 (показать)
public function getTableNames($schema='')
{
    if(!isset(
$this->_tableNames[$schema]))
        
$this->_tableNames[$schema]=$this->findTableNames($schema);
    return 
$this->_tableNames[$schema];
}

Возвращает все имена таблиц в базе данных.

getTables() метод

public array getTables(string $schema='')
$schema string схема таблиц. По умолчанию пустая строка, что означает текущую или по умолчанию схему.
{return} array метаданные для всех таблиц в базе данных. Каждый элемент массива является экземпляром CDbTableSchema (или его дочернего класса). Ключами массива являются имена таблиц.
Исходный код: framework/db/schema/CDbSchema.php#119 (показать)
public function getTables($schema='')
{
    
$tables=array();
    foreach(
$this->getTableNames($schema) as $name)
    {
        if((
$table=$this->getTable($name))!==null)
            
$tables[$name]=$table;
    }
    return 
$tables;
}

Возвращает метаданные для всех таблиц в базе данных.

loadTable() метод

abstract protected CDbTableSchema loadTable(string $name)
$name string имя таблицы
{return} CDbTableSchema зависимые от драйвера метаданные таблицы, null, если таблица не существует.
Исходный код: framework/db/schema/CDbSchema.php#44 (показать)
abstract protected function loadTable($name);

Загружает метаданные для указанной таблицы.

quoteColumnName() метод

public string quoteColumnName(string $name)
$name string имя столбца
{return} string правильно обрамлённое имя столбца
Исходный код: framework/db/schema/CDbSchema.php#214 (показать)
public function quoteColumnName($name)
{
    if((
$pos=strrpos($name,'.'))!==false)
    {
        
$prefix=$this->quoteTableName(substr($name,0,$pos)).'.';
        
$name=substr($name,$pos+1);
    }
    else
        
$prefix='';
    return 
$prefix . ($name==='*' ? $name : $this->quoteSimpleColumnName($name));
}

Обрамляет имя столбца для использования в запросе. Если имя столбца содержит префикс, префикс также будет правильно обрамлён.

См. также

  • quoteSimpleColumnName

quoteSimpleColumnName() метод (доступен начиная с версии 1.1.6)

public string quoteSimpleColumnName(string $name)
$name string имя столбца
{return} string правильно обрамлённое имя столбца
Исходный код: framework/db/schema/CDbSchema.php#233 (показать)
public function quoteSimpleColumnName($name)
{
    return 
'"'.$name.'"';
}

Обрамляет простое имя столбца для использования в запросе. Простое имя столбца не содержит префикса.

quoteSimpleTableName() метод (доступен начиная с версии 1.1.6)

public string quoteSimpleTableName(string $name)
$name string имя таблицы
{return} string правильно обрамлённое имя таблицы
Исходный код: framework/db/schema/CDbSchema.php#202 (показать)
public function quoteSimpleTableName($name)
{
    return 
"'".$name."'";
}

Обрамляет простое имя таблицы для использования в запросе. Простое имя таблицы не содержит префикса схемы.

quoteTableName() метод

public string quoteTableName(string $name)
$name string имя таблицы
{return} string правильно обрамлённое имя таблицы
Исходный код: framework/db/schema/CDbSchema.php#184 (показать)
public function quoteTableName($name)
{
    if(
strpos($name,'.')===false)
        return 
$this->quoteSimpleTableName($name);
    
$parts=explode('.',$name);
    foreach(
$parts as $i=>$part)
        
$parts[$i]=$this->quoteSimpleTableName($part);
    return 
implode('.',$parts);

}

Обрамляет имя таблицы для использования в запросе. Если имя таблицы содержит префикс схемы, префикс также будет правильно обрамлён.

См. также

  • quoteSimpleTableName

refresh() метод

public void refresh()
Исходный код: framework/db/schema/CDbSchema.php#159 (показать)
public function refresh()
{
    if((
$duration=$this->_connection->schemaCachingDuration)>0 && $this->_connection->schemaCacheID!==false && ($cache=Yii::app()->getComponent($this->_connection->schemaCacheID))!==null)
    {
        foreach(
array_keys($this->_tables) as $name)
        {
            if(!isset(
$this->_cacheExclude[$name]))
            {
                
$key='yii:dbschema'.$this->_connection->connectionString.':'.$this->_connection->username.':'.$name;
                
$cache->delete($key);
            }
        }
    }
    
$this->_tables=array();
    
$this->_tableNames=array();
    
$this->_builder=null;
}

Обновляет схему. Этот метод сбрасывает загруженные метаданные таблицы и построитель команд, чтобы они могли быть повторно созданы для отражения изменения схемы.

renameColumn() метод (доступен начиная с версии 1.1.6)

public string renameColumn(string $table, string $name, string $newName)
$table string таблица, столбец которой требуется переименовать. Имя будет корректно обрамлено кавычками методом.
$name string старое имя столбца. Имя будет корректно обрамлено кавычками методом.
$newName string новое имя столбца. Имя будет корректно обрамлено кавычками методом.
{return} string SQL-запрос для переименования столбца БД.
Исходный код: framework/db/schema/CDbSchema.php#457 (показать)
public function renameColumn($table,$name,$newName)
{
    return 
"ALTER TABLE ".$this->quoteTableName($table)
        . 
" RENAME COLUMN ".$this->quoteColumnName($name)
        . 
" TO ".$this->quoteColumnName($newName);
}

Создаёт SQL-запрос для переименования столбца.

renameTable() метод (доступен начиная с версии v1.1.6)

public string renameTable(string $table, string $newName)
$table string таблица, которую требуется переименовать. Имя будет корректно обрамлено кавычками методом.
$newName string новое имя таблицы. Имя будет корректно обрамлено кавычками методом.
{return} string SQL-запрос для переименования таблицы БД.
Исходный код: framework/db/schema/CDbSchema.php#392 (показать)
public function renameTable($table,$newName)
{
    return 
'RENAME TABLE ' . $this->quoteTableName($table) . ' TO ' . $this->quoteTableName($newName);
}

Создаёт SQL-запрос для переименования таблицы БД.

resetSequence() метод (доступен начиная с версии v1.1)

public void resetSequence(CDbTableSchema $table, integer|null $value=NULL)
$table CDbTableSchema схема таблицы, последовательность первичного ключа которой будет сброшена
$value integer|null значение для первичного ключа следующей новой строки, вставленной. Если не задано, первичный ключ следующей новой строки будет иметь максимальное значение первичного ключа плюс один (т.е. обрезка последовательности).
Исходный код: framework/db/schema/CDbSchema.php#274 (показать)
public function resetSequence($table,$value=null)
{
}

Сбрасывает значение последовательности первичного ключа таблицы. Последовательность будет сброшена таким образом, что первичный ключ следующей новой вставленной строки будет иметь заданное значение или максимальное значение первичного ключа плюс один (т.е. обрезка последовательности).

truncateTable() метод (доступен начиная с версии v1.1.6)

public string truncateTable(string $table)
$table string таблица, которая будет усечена. Имя будет корректно обрамлено кавычками методом.
{return} string SQL-запрос для усечения таблицы БД.
Исходный код: framework/db/schema/CDbSchema.php#414 (показать)
public function truncateTable($table)
{
    return 
"TRUNCATE TABLE ".$this->quoteTableName($table);
}

Создаёт SQL-запрос для усечения таблицы БД.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDbSchema

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API