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