Spec-Zone.ru › Yii 1.1

COciCommandBuilder

Пакет system.db.schema.oci
Наследование class COciCommandBuilder » CDbCommandBuilder » CComponent
Исходный код framework/db/schema/oci/COciCommandBuilder.php
COciCommandBuilder предоставляет базовые методы для создания команд запросов к таблицам.

Публичные свойства

Свойство Тип Описание Определено в
dbConnection CDbConnection соединение с базой данных. CDbCommandBuilder
returnID integer последний идентификатор вставки COciCommandBuilder
schema CDbSchema схема для этого билдера команд. CDbCommandBuilder

Защищённые свойства

Свойство Тип Описание Определено в
integerPrimaryKeyDefaultValue string Возвращает значение по умолчанию для целочисленного/последовательного первичного ключа. Значение по умолчанию означает, что следующее CDbCommandBuilder

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

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() CDbCommandBuilder
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
applyCondition() Изменяет SQL для применения условия WHERE. CDbCommandBuilder
applyGroup() Изменяет SQL для применения GROUP BY. CDbCommandBuilder
applyHaving() Изменяет SQL для применения HAVING. CDbCommandBuilder
applyJoin() Изменяет SQL для применения условия JOIN. CDbCommandBuilder
applyLimit() Изменяет SQL для применения LIMIT и OFFSET. COciCommandBuilder
applyOrder() Изменяет SQL для применения ORDER BY. CDbCommandBuilder
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Присоединяет поведение к компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик события к событию. CComponent
bindValues() Связывает значения параметров для SQL-команды. CDbCommandBuilder
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
createColumnCriteria() Создаёт критерии запроса со значениями указанных столбцов. CDbCommandBuilder
createCountCommand() Создаёт команду COUNT(*) для одной таблицы. CDbCommandBuilder
createCriteria() Создаёт критерии запроса. CDbCommandBuilder
createDeleteCommand() Создаёт команду DELETE. CDbCommandBuilder
createFindCommand() Создаёт команду SELECT для одной таблицы. CDbCommandBuilder
createInCondition() Генерирует выражение для выбора строк с указанными значениями первичного ключа. CDbCommandBuilder
createInsertCommand() Создаёт команду INSERT. COciCommandBuilder
createMultipleInsertCommand() Создаёт многократную команду INSERT. COciCommandBuilder
createPkCondition() Генерирует выражение для выбора строк с указанными значениями первичного ключа. CDbCommandBuilder
createPkCriteria() Создаёт критерии запроса с указанным первичным ключом. CDbCommandBuilder
createSearchCondition() Генерирует выражение для поиска указанных ключевых слов в списке столбцов. CDbCommandBuilder
createSqlCommand() Создаёт команду на основе заданного SQL-запроса. CDbCommandBuilder
createUpdateCommand() Создаёт команду UPDATE. CDbCommandBuilder
createUpdateCounterCommand() Создаёт команду UPDATE, которая увеличивает/уменьшает определённые столбцы. CDbCommandBuilder
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает присоединённое поведение. CComponent
disableBehaviors() Отключает все присоединённые поведения к этому компоненту. CComponent
enableBehavior() Включает присоединённое поведение. CComponent
enableBehaviors() Включает все присоединённые поведения к этому компоненту. CComponent
evaluateExpression() Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. CComponent
getDbConnection() Возвращает соединение с базой данных. CDbCommandBuilder
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getLastInsertID() Возвращает последний идентификатор вставки для указанной таблицы. COciCommandBuilder
getSchema() Возвращает схему для этого билдера команд. CDbCommandBuilder
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли для данного события присоединённые обработчики. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
raiseEvent() Вызывает событие. CComponent

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

Метод Описание Определено в
composeMultipleInsertCommand() Создаёт команду INSERT для множественных строк. CDbCommandBuilder
createCompositeInCondition() Генерирует выражение для выбора строк со значениями составного ключа. CDbCommandBuilder
ensureTable() Проверяет, является ли параметр корректной схемой таблицы. CDbCommandBuilder
getIntegerPrimaryKeyDefaultValue() Возвращает значение по умолчанию для целого/последовательного первичного ключа. Значение по умолчанию означает, что следующий CDbCommandBuilder

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

returnID свойство

public integer $returnID;

последний идентификатор вставки

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

applyLimit() метод

public string applyLimit(string $sql, integer $limit, integer $offset)
$sql строка Строка SQL-запроса без LIMIT и OFFSET.
$limit целое число максимальное количество строк, -1 для игнорирования ограничения.
$offset целое число смещение строки, -1 для игнорирования смещения.
{возвращает} строка SQL с LIMIT и OFFSET
Исходный код: framework/db/schema/oci/COciCommandBuilder.php#41 (показать)
public function applyLimit($sql,$limit,$offset)
{
    if ((
$limit < 0) and ($offset < 0)) return $sql;

    
$filters = array();
    if(
$offset>0){
        
$filters[] = 'rowNumId > '.(int)$offset;
    }

    if(
$limit>=0){
        
$filters[]= 'rownum <= '.(int)$limit;
    }

    if (
count($filters) > 0){
        
$filter = implode(' and ', $filters);
        
$filter= " WHERE ".$filter;
    }else{
        
$filter = '';
    }


    
$sql = <<<EOD
WITH USER_SQL AS ({$sql}),
PAGINATION AS (SELECT USER_SQL.*, rownum as rowNumId FROM USER_SQL)
SELECT *
FROM PAGINATION
{$filter}
EOD;

    return 
$sql;
}

Изменяет SQL-запрос для применения LIMIT и OFFSET.

createInsertCommand() метод

public CDbCommand createInsertCommand(mixed $table, array $data)
$table смешанный тип схема таблицы (CDbTableSchema) или имя таблицы (строка).
$data массив данные для вставки (имя столбца=>значение столбца). Если ключ не является допустимым именем столбца, соответствующее значение будет проигнорировано.
{возвращает} CDbCommand команда вставки
Исходный код: framework/db/schema/oci/COciCommandBuilder.php#79 (показать)
public function createInsertCommand($table,$data)
{
    
$this->ensureTable($table);
    
$fields=array();
    
$values=array();
    
$placeholders=array();
    
$i=0;
    foreach(
$data as $name=>$value)
    {
        if((
$column=$table->getColumn($name))!==null && ($value!==null || $column->allowNull))
        {
            
$fields[]=$column->rawName;
            if(
$value instanceof CDbExpression)
            {
                
$placeholders[]=$value->expression;
                foreach(
$value->params as $n=>$v)
                    
$values[$n]=$v;
            }
            else
            {
                
$placeholders[]=self::PARAM_PREFIX.$i;
                
$values[self::PARAM_PREFIX.$i]=$column->typecast($value);
                
$i++;
            }
        }
    }

    
$sql="INSERT INTO {$table->rawName} (".implode(', ',$fields).') VALUES ('.implode(', ',$placeholders).')';

    if(
is_string($table->primaryKey) && ($column=$table->getColumn($table->primaryKey))!==null && $column->type!=='string')
    {
        
$sql.=' RETURNING '.$column->rawName.' INTO :RETURN_ID';
        
$command=$this->getDbConnection()->createCommand($sql);
        
$command->bindParam(':RETURN_ID', $this->returnID, PDO::PARAM_INT, 12);
        
$table->sequenceName='RETURN_ID';
    }
    else
        
$command=$this->getDbConnection()->createCommand($sql);

    foreach(
$values as $name=>$value)
        
$command->bindValue($name,$value);

    return 
$command;
}

Создаёт команду INSERT.

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

public CDbCommand createMultipleInsertCommand(mixed $table, array $data)
$table смешанный тип схема таблицы (CDbTableSchema) или имя таблицы (строка).
$data массив список данных для вставки, каждое значение должно быть массивом в формате (имя столбца=>значение столбца). Если ключ не является допустимым именем столбца, соответствующее значение будет проигнорировано.
{возвращает} CDbCommand команда множественной вставки
Исходный код: framework/db/schema/oci/COciCommandBuilder.php#134 (показать)
public function createMultipleInsertCommand($table,array $data)
{
    
$templates=array(
        
'main'=>'INSERT ALL {{rowInsertValues}} SELECT * FROM dual',
        
'columnInsertValue'=>'{{value}}',
        
'columnInsertValueGlue'=>', ',
        
'rowInsertValue'=>'INTO {{tableName}} ({{columnInsertNames}}) VALUES ({{columnInsertValues}})',
        
'rowInsertValueGlue'=>' ',
        
'columnInsertNameGlue'=>', ',
    );
    return 
$this->composeMultipleInsertCommand($table,$data,$templates);
}

Создаёт команду множественной вставки. Этот метод может быть использован для повышения производительности при вставке большого объёма данных в таблицы базы данных.

getLastInsertID() метод

public mixed getLastInsertID(mixed $table)
$table смешанный тип схема таблицы (CDbTableSchema) или имя таблицы (строка).
{возвращает} смешанный тип последний идентификатор вставки. Null возвращается, если имя последовательности отсутствует.
Исходный код: framework/db/schema/oci/COciCommandBuilder.php#29 (показать)
public function getLastInsertID($table)
{
    return 
$this->returnID;
}

Возвращает последний идентификатор вставки для указанной таблицы.

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

Spec-Zone.ru

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