Spec-Zone.ru › Yii 1.1

CDbCommand

Пакет system.db
Наследование class CDbCommand » CComponent
С момента 1.0
Исходный код framework/db/CDbCommand.php
CDbCommand представляет SQL-запрос для выполнения над базой данных.

Обычно он создаётся с помощью вызова CDbConnection::createCommand. SQL-запрос для выполнения может быть задан через Text.

Для выполнения невыборочного SQL-запроса (например, insert, delete, update), используйте execute. Для выполнения SQL-запроса, возвращающего набор результатов (например, SELECT), используйте query или его удобные версии queryRow, queryColumn или queryScalar.

Если SQL-запрос возвращает результаты (например, SELECT SQL), к ним можно получить доступ через возвращённый CDbDataReader.

CDbCommand поддерживает подготовку SQL-запросов и привязку параметров. Для привязки PHP-переменной к параметру в SQL вызовите bindParam. Для привязки значения к параметру SQL вызовите bindValue. При привязке параметра SQL-запрос автоматически подготавливается. Также вы можете явно подготовить SQL-запрос, вызвав prepare.

Начиная с версии 1.1.6, CDbCommand также может использоваться как генератор запросов, который строит SQL-запрос из фрагментов кода. Например,
$user = Yii::app()->db->createCommand()
    ->select('username, password')
    ->from('tbl_user')
    ->where('id=:id', array(':id'=>1))
    ->queryRow();

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

Свойство Тип Описание Определено
connection CDbConnection соединение, связанное с этим запросом CDbCommand
distinct boolean Возвращает значение, указывающее, следует ли использовать SELECT DISTINCT. CDbCommand
from string Возвращает часть FROM в запросе. CDbCommand
group string Возвращает часть GROUP BY в запросе. CDbCommand
having string Возвращает часть HAVING в запросе. CDbCommand
join mixed Возвращает часть join в запросе. CDbCommand
limit string Возвращает часть LIMIT в запросе. CDbCommand
offset string Возвращает часть OFFSET в запросе. CDbCommand
order string Возвращает часть ORDER BY в запросе. CDbCommand
params array параметры (имя=>значение) для привязки к текущему запросу. CDbCommand
pdoStatement PDOStatement базовый объект PDOStatement для этого запроса. Может быть null, если запрос ещё не подготовлен. CDbCommand
select string Возвращает часть SELECT в запросе. CDbCommand
text string SQL-запрос для выполнения CDbCommand
union mixed Возвращает часть UNION в запросе. CDbCommand
where string Возвращает часть WHERE в запросе. CDbCommand

Общедоступные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CDbCommand
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__sleep() Устанавливает значение оператора в null при сериализации. CDbCommand
__unset() Устанавливает свойство компонента в null. CComponent
addColumn() Создает и выполняет оператор SQL для добавления нового столбца БД. CDbCommand
addForeignKey() Создает оператор SQL для добавления ограничения внешнего ключа к существующей таблице. CDbCommand
addPrimaryKey() Создает оператор SQL для создания ограничения первичного ключа. CDbCommand
alterColumn() Создает и выполняет оператор SQL для изменения определения столбца. CDbCommand
andWhere() Добавляет заданное условие к существующей части WHERE запроса с оператором 'AND'. CDbCommand
asa() Возвращает объект именованного поведения. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
bindParam() Привязывает параметр к оператору SQL, который будет выполнен. CDbCommand
bindValue() Привязывает значение к параметру. CDbCommand
bindValues() Привязывает список значений к соответствующим параметрам. CDbCommand
buildQuery() Создает оператор SQL SELECT из заданного описания запроса. CDbCommand
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
cancel() Отменяет выполнение оператора SQL. CDbCommand
createIndex() Создает и выполняет оператор SQL для создания нового индекса. CDbCommand
createTable() Создает и выполняет оператор SQL для создания новой таблицы БД. CDbCommand
crossJoin() Добавляет часть CROSS JOIN к запросу. CDbCommand
delete() Создает и выполняет оператор SQL DELETE. CDbCommand
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик событий. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все прикрепленные к этому компоненту поведения. CComponent
dropColumn() Создает и выполняет оператор SQL для удаления столбца БД. CDbCommand
dropForeignKey() Создает оператор SQL для удаления ограничения внешнего ключа. CDbCommand
dropIndex() Создает и выполняет оператор SQL для удаления индекса. CDbCommand
dropPrimaryKey() Создает оператор SQL для удаления ограничения первичного ключа. CDbCommand
dropTable() Создает и выполняет оператор SQL для удаления таблицы БД. CDbCommand
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
execute() Выполняет оператор SQL. CDbCommand
from() Устанавливает часть FROM запроса. CDbCommand
getConnection() Возвращает подключение, связанное с этим командой. CDbCommand
getDistinct() Возвращает значение, указывающее, следует ли использовать SELECT DISTINCT. CDbCommand
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
getFrom() Возвращает часть FROM в запросе. CDbCommand
getGroup() Возвращает часть GROUP BY в запросе. CDbCommand
getHaving() Возвращает часть HAVING в запросе. CDbCommand
getJoin() Возвращает часть JOIN в запросе. CDbCommand
getLimit() Возвращает часть LIMIT в запросе. CDbCommand
getOffset() Возвращает часть OFFSET в запросе. CDbCommand
getOrder() Возвращает часть ORDER BY в запросе. CDbCommand
getPdoStatement() Возвращает базовый PDOStatement для этой команды. Может быть null, если оператор еще не подготовлен. CDbCommand
getSelect() Возвращает часть SELECT в запросе. CDbCommand
getText() Возвращает оператор SQL, который будет выполнен. CDbCommand
getUnion() Возвращает часть UNION в запросе. CDbCommand
getWhere() Возвращает часть WHERE в запросе. CDbCommand
group() Устанавливает часть GROUP BY запроса. CDbCommand
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикрепленные обработчики для именованного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
having() Устанавливает часть HAVING запроса. CDbCommand
insert() Создает и выполняет оператор SQL INSERT. CDbCommand
join() Добавляет часть INNER JOIN к запросу. CDbCommand
leftJoin() Добавляет часть LEFT OUTER JOIN к запросу. CDbCommand
limit() Устанавливает часть LIMIT запроса. CDbCommand
naturalJoin() Добавляет часть NATURAL JOIN к запросу. CDbCommand
naturalLeftJoin() Добавляет часть NATURAL LEFT JOIN к запросу. CDbCommand
naturalRightJoin() Добавляет часть NATURAL RIGHT JOIN к запросу. CDbCommand
offset() Устанавливает часть OFFSET запроса. CDbCommand
orWhere() Добавляет заданное условие к существующей части WHERE запроса с оператором 'OR'. CDbCommand
order() Устанавливает часть ORDER BY запроса. CDbCommand
prepare() Подготавливает SQL-запрос к выполнению. CDbCommand
query() Выполняет SQL-запрос и возвращает результат запроса. CDbCommand
queryAll() Выполняет SQL-запрос и возвращает все строки. CDbCommand
queryColumn() Выполняет SQL-запрос и возвращает первый столбец результата. CDbCommand
queryRow() Выполняет SQL-запрос и возвращает первую строку результата. CDbCommand
queryScalar() Выполняет SQL-запрос и возвращает значение первого столбца в первой строке данных. CDbCommand
raiseEvent() Вызывает событие. CComponent
renameColumn() Создаёт и выполняет SQL-запрос для переименования столбца. CDbCommand
renameTable() Создаёт и выполняет SQL-запрос для переименования таблицы БД. CDbCommand
reset() Очищает команду и готовит к построению нового запроса. CDbCommand
rightJoin() Добавляет часть RIGHT OUTER JOIN к запросу. CDbCommand
select() Устанавливает часть SELECT запроса. CDbCommand
selectDistinct() Устанавливает часть SELECT запроса с флагом DISTINCT. CDbCommand
setDistinct() Устанавливает значение, указывающее, нужно ли использовать SELECT DISTINCT. CDbCommand
setFetchMode() Установить режим выборки по умолчанию для этого запроса CDbCommand
setFrom() Устанавливает часть FROM в запросе. CDbCommand
setGroup() Устанавливает часть GROUP BY в запросе. CDbCommand
setHaving() Устанавливает часть HAVING в запросе. CDbCommand
setJoin() Устанавливает часть join в запросе. CDbCommand
setLimit() Устанавливает часть LIMIT в запросе. CDbCommand
setOffset() Устанавливает часть OFFSET в запросе. CDbCommand
setOrder() Устанавливает часть ORDER BY в запросе. CDbCommand
setSelect() Устанавливает часть SELECT в запросе. CDbCommand
setText() Указывает SQL-запрос, который нужно выполнить. CDbCommand
setUnion() Устанавливает часть UNION в запросе. CDbCommand
setWhere() Устанавливает часть WHERE в запросе. CDbCommand
truncateTable() Создаёт и выполняет SQL-запрос для удаления данных из таблицы БД. CDbCommand
union() Добавляет SQL-запрос с помощью оператора UNION. CDbCommand
update() Создаёт и выполняет SQL-запрос UPDATE. CDbCommand
where() Устанавливает часть WHERE запроса. CDbCommand

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

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

public CDbConnection getConnection()

соединение, связанное с этой командой

distinct свойство (доступно с версии v1.1.6)

public boolean getDistinct()
public void setDistinct(boolean $value)

Возвращает значение, указывающее, нужно ли использовать SELECT DISTINCT.

from свойство (доступно с версии v1.1.6)

public string getFrom()
public void setFrom(mixed $value)

Возвращает часть FROM в запросе.

group свойство (доступно с версии v1.1.6)

public string getGroup()
public void setGroup(mixed $value)

Возвращает часть GROUP BY в запросе.

having свойство (доступно с версии v1.1.6)

public string getHaving()
public void setHaving(mixed $value)

Возвращает часть HAVING в запросе.

join свойство (доступно с версии v1.1.6)

public mixed getJoin()
public void setJoin(mixed $value)

Возвращает часть join в запросе.

limit свойство (доступно с версии v1.1.6)

public string getLimit()
public void setLimit(integer $value)

Возвращает часть LIMIT в запросе.

offset свойство (доступно с версии v1.1.6)

public string getOffset()
public void setOffset(integer $value)

Возвращает часть OFFSET в запросе.

order свойство (доступно с версии v1.1.6)

public string getOrder()
public void setOrder(mixed $value)

Возвращает часть ORDER BY в запросе.

params свойство (доступно с версии v1.1.6)

public array $params;

параметры (имя=>значение) для связывания с текущим запросом.

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

public PDOStatement getPdoStatement()

базовый PDOStatement для этой команды. Может быть null, если запрос ещё не подготовлен.

select свойство (доступно с версии v1.1.6)

public string getSelect()
public void setSelect(mixed $value)

Возвращает часть SELECT в запросе.

text свойство

public string getText()
public static setText(string $value)

SQL-запрос, который будет выполнен

union свойство (доступно с версии v1.1.6)

public mixed getUnion()
public void setUnion(mixed $value)

Возвращает часть UNION в запросе.

where свойство (доступно с версии v1.1.6)

public string getWhere()
public void setWhere(mixed $value)

Возвращает часть WHERE в запросе.

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

__construct() метод

public void __construct(CDbConnection $connection, mixed $query=NULL)
$connection CDbConnection соединение с базой данных
$query mixed запрос БД для выполнения. Это может быть строка, представляющая SQL-запрос, или массив, пары имя-значение которого будут использованы для установки соответствующих свойств созданного объекта команды.

Например, вы можете передать либо 'SELECT * FROM tbl_user' либо array('select'=>'*', 'from'=>'tbl_user'). Они эквивалентны с точки зрения конечного результата запроса.

При передаче запроса в виде массива обычно устанавливаются следующие свойства: select, distinct, from, where, join, group, having, order, limit, offset и union. Подробнее о допустимых значениях свойств см. в методах-сеттерах каждого из этих свойств. Эта возможность доступна с версии 1.1.6.

С версии 1.1.7 можно использовать определённый режим извлечения данных, установив FetchMode. Для получения более подробной информации см. http://www.php.net/manual/en/function.PDOStatement-setFetchMode.php.
Исходный код: framework/db/CDbCommand.php#100 (показать)
public function __construct(CDbConnection $connection,$query=null)
{
    
$this->_connection=$connection;
    if(
is_array($query))
    {
        foreach(
$query as $name=>$value)
            
$this->$name=$value;
    }
    else
        
$this->setText($query);
}

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

__sleep() метод

public array __sleep()
{return} array
Исходный код: framework/db/CDbCommand.php#116 (показать)
public function __sleep()
{
    
$this->_statement=null;
    return 
array_keys(get_object_vars($this));
}

Устанавливает значение оператора в null при сериализации.

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

public integer addColumn(string $table, string $column, string $type)
$table строка таблица, к которой будет добавлена новая колонка. Имя таблицы будет корректно обрамлено кавычками методом.
$column строка имя новой колонки. Имя будет корректно обрамлено кавычками методом.
$type строка тип колонки. Метод getColumnType будет вызван для преобразования абстрактного типа колонки (если есть) в физический. Всё, что не распознаётся как абстрактный тип, сохранится в сгенерированном SQL. Например, 'string' будет преобразовано в 'varchar(255)', а 'string not null' — в 'varchar(255) not null'.
{return} целое число количество изменённых строк в результате выполнения.
Исходный код: framework/db/CDbCommand.php#1403 (показать)
public function addColumn($table, $column, $type)
{
    return 
$this->setText($this->getConnection()->getSchema()->addColumn($table, $column, $type))->execute();
}

Строит и выполняет SQL-оператор для добавления новой колонки в БД.

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

public integer addForeignKey(string $name, string $table, string|array $columns, string $refTable, string|array $refColumns, string $delete=NULL, string $update=NULL)
$name строка имя внешнего ключа.
$table строка таблица, к которой будет добавлен внешний ключ.
$columns строка|массив имя колонки, к которой будет применен ограничитель. Если ограничитель применяется к нескольким колонкам, разделите их запятыми или передайте массив имён колонок.
$refTable строка таблица, к которой ссылается внешний ключ.
$refColumns строка|массив имя колонки, к которой ссылается внешний ключ. Если ограничитель применяется к нескольким колонкам, разделите их запятыми или передайте массив имён колонок.
$delete строка опция ON DELETE. Большинство СУБД поддерживают следующие опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL
$update строка опция ON UPDATE. Большинство СУБД поддерживают следующие опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL
{return} целое число количество изменённых строк в результате выполнения.
Исходный код: framework/db/CDbCommand.php#1461 (показать)
public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete=null, $update=null)
{
    return 
$this->setText($this->getConnection()->getSchema()->addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete, $update))->execute();
}

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

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

public integer addPrimaryKey(string $name, string $table, string|array $columns)
$name строка имя ограничения первичного ключа, которое будет создано. Имя будет корректно обрамлено кавычками методом.
$table строка таблица, которая будет наследовать первичный ключ. Имя будет корректно обрамлено кавычками методом.
$columns строка|массив строка с именами колонок, разделённых запятыми, или массив колонок, составляющих первичный ключ. Массив значений может быть передан с версии 1.1.14.
{return} целое число количество изменённых строк в результате выполнения.
Исходный код: framework/db/CDbCommand.php#1623 (показать)
public function addPrimaryKey($name,$table,$columns)
{
    return 
$this->setText($this->getConnection()->getSchema()->addPrimaryKey($name,$table,$columns))->execute();
}

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

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

public integer alterColumn(string $table, string $column, string $type)
$table строка таблица, колонка которой будет изменена. Имя таблицы будет корректно обрамлено кавычками методом.
$column строка имя колонки, которая будет изменена. Имя будет корректно обрамлено кавычками методом.
$type строка новый тип колонки. Метод getColumnType будет вызван для преобразования абстрактного типа колонки (если есть) в физический. Всё, что не распознаётся как абстрактный тип, сохранится в сгенерированном SQL. Например, 'string' будет преобразовано в 'varchar(255)', а 'string not null' — в 'varchar(255) not null'.
{return} целое число количество изменённых строк в результате выполнения.
Исходный код: framework/db/CDbCommand.php#1443 (показать)
public function alterColumn($table, $column, $type)
{
    return 
$this->setText($this->getConnection()->getSchema()->alterColumn($table, $column, $type))->execute();
}

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

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

public static andWhere(mixed $conditions, array $params=array ( ))
$conditions смешанный тип условия, которые должны быть добавлены к части WHERE.
$params массив параметры (имя=>значение), которые должны быть привязаны к запросу.
{return} статический сам объект команды.
Исходный код: framework/db/CDbCommand.php#799 (показать)
public function andWhere($conditions,$params=array())
{
    if(isset(
$this->_query['where']))
        
$this->_query['where']=$this->processConditions(array('AND',$this->_query['where'],$conditions));
    else
        
$this->_query['where']=$this->processConditions($conditions);

    foreach(
$params as $name=>$value)
        
$this->params[$name]=$value;
    return 
$this;
}

Добавляет данное условие к существующей части WHERE запроса с оператором 'И'.

Этот метод работает почти так же, как where, за исключением того, что он добавляет условие с оператором 'И', а не заменяет его новым. Для получения дополнительной информации о параметрах этого метода обратитесь к документации where.

bindParam() метод

public static bindParam(mixed $name, mixed &$value, integer $dataType=NULL, integer $length=NULL, mixed $driverOptions=NULL)
$name смешанный тип Идентификатор параметра. Для подготовленного оператора с именованными плейсхолдерами, это будет имя параметра вида :имя. Для подготовленного оператора с плейсхолдерами в виде знака вопроса, это будет индекс параметра (с 1).
$value смешанный тип Имя PHP-переменной, которая будет связана с параметром SQL-оператора
$dataType целое число Тип данных SQL параметра. Если null, тип определяется типом значения в PHP.
$length целое число длина типа данных
$driverOptions смешанный тип параметры, специфичные для драйвера (доступно с версии 1.1.6)
{return} статический текущая выполняемая команда
Исходный код: framework/db/CDbCommand.php#245 (показать)
public function bindParam($name, &$value, $dataType=null, $length=null, $driverOptions=null)
{
    
$this->prepare();
    if(
$dataType===null)
        
$this->_statement->bindParam($name,$value,$this->_connection->getPdoType(gettype($value)));
    elseif(
$length===null)
        
$this->_statement->bindParam($name,$value,$dataType);
    elseif(
$driverOptions===null)
        
$this->_statement->bindParam($name,$value,$dataType,$length);
    else
        
$this->_statement->bindParam($name,$value,$dataType,$length,$driverOptions);
    
$this->_paramLog[$name]=&$value;
    return 
$this;
}

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

См. также

  • http://www.php.net/manual/en/function.PDOStatement-bindParam.php

bindValue() метод

public static bindValue(mixed $name, mixed $value, integer $dataType=NULL)
$name смешанный тип Идентификатор параметра. Для подготовленного оператора с именованными плейсхолдерами, это будет имя параметра вида :имя. Для подготовленного оператора с плейсхолдерами в виде знака вопроса, это будет индекс параметра (с 1).
$value смешанный тип Значение, которое будет привязано к параметру
$dataType целое число Тип данных SQL параметра. Если null, тип определяется типом значения в PHP.
{return} статический текущая выполняемая команда
Исходный код: framework/db/CDbCommand.php#271 (показать)
public function bindValue($name, $value, $dataType=null)
{
    
$this->prepare();
    if(
$dataType===null)
        
$this->_statement->bindValue($name,$value,$this->_connection->getPdoType(gettype($value)));
    else
        
$this->_statement->bindValue($name,$value,$dataType);
    
$this->_paramLog[$name]=$value;
    return 
$this;
}

Привязывает значение к параметру.

См. также

  • http://www.php.net/manual/en/function.PDOStatement-bindValue.php

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

public static bindValues(array $values)
$values массив значения, которые нужно привязать. Массив должен быть ассоциативным, где ключи — имена параметров, а значения — соответствующие значения параметров. Например, array(':name'=>'John', ':age'=>25).
{return} статический текущая выполняемая команда
Исходный код: framework/db/CDbCommand.php#292 (показать)
public function bindValues($values)
{
    
$this->prepare();
    foreach(
$values as $name=>$value)
    {
        
$this->_statement->bindValue($name,$value,$this->_connection->getPdoType(gettype($value)));
        
$this->_paramLog[$name]=$value;
    }
    return 
$this;
}

Привязывает список значений к соответствующим параметрам. Это аналогично bindValue, но привязывает несколько значений. Обратите внимание, что тип данных SQL каждого значения определяется его типом PHP.

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

public string buildQuery(array $query)
$query массив спецификация запроса в виде пар имя-значение. Поддерживаются следующие опции запроса: select, distinct, from, where, join, group, having, order, limit, offset и union.
{return} строка SQL-запрос
Исходный код: framework/db/CDbCommand.php#558 (показать)
public function buildQuery($query)
{
    
$sql=!empty($query['distinct']) ? 'SELECT DISTINCT' : 'SELECT';
    
$sql.=' '.(!empty($query['select']) ? $query['select'] : '*');

    if(!empty(
$query['from']))
        
$sql.="\nFROM ".$query['from'];

    if(!empty(
$query['join']))
        
$sql.="\n".(is_array($query['join']) ? implode("\n",$query['join']) : $query['join']);

    if(!empty(
$query['where']))
        
$sql.="\nWHERE ".$query['where'];

    if(!empty(
$query['group']))
        
$sql.="\nGROUP BY ".$query['group'];

    if(!empty(
$query['having']))
        
$sql.="\nHAVING ".$query['having'];

    if(!empty(
$query['union']))
        
$sql.="\nUNION (\n".(is_array($query['union']) ? implode("\n) UNION (\n",$query['union']) : $query['union']) . ')';

    if(!empty(
$query['order']))
        
$sql.="\nORDER BY ".$query['order'];

    
$limit=isset($query['limit']) ? (int)$query['limit'] : -1;
    
$offset=isset($query['offset']) ? (int)$query['offset'] : -1;
    if(
$limit>=0 || $offset>0)
        
$sql=$this->_connection->getCommandBuilder()->applyLimit($sql,$limit,$offset);

    return 
$sql;
}

Создает SQL-запрос SELECT из заданной спецификации запроса.

cancel() метод

public void cancel()
Исходный код: framework/db/CDbCommand.php#227 (показать)
public function cancel()
{
    
$this->_statement=null;
}

Отменяет выполнение SQL-запроса.

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

public integer createIndex(string $name, string $table, string|array $columns, boolean $unique=false)
$name строка имя индекса. Метод корректно его обработает (добавит кавычки).
$table строка таблица, для которой создается новый индекс. Имя таблицы будет обработано (добавит кавычки).
$columns строка|массив столбец(ы), которые должны быть включены в индекс. Если столбцов несколько, разделяйте их запятыми или передайте как массив имён столбцов. Каждое имя столбца будет корректно обработано (добавит кавычки), если в нём не содержатся скобки.
$unique булево добавлять ли ограничение UNIQUE к создаваемому индексу.
{return} целое число количество изменённых строк.
Исходный код: framework/db/CDbCommand.php#1488 (показать)
public function createIndex($name, $table, $columns, $unique=false)
{
    return 
$this->setText($this->getConnection()->getSchema()->createIndex($name, $table, $columns, $unique))->execute();
}

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

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

public integer createTable(string $table, array $columns, string $options=NULL)
$table строка имя таблицы, которую нужно создать. Имя будет корректно обработано (добавит кавычки).
$columns массив столбцы (имя=>описание) в новой таблице.
$options строка дополнительный SQL-фрагмент, который будет добавлен к сгенерированному SQL.
{return} целое число всегда возвращает 0. Смотрите http://php.net/manual/en/pdostatement.rowcount.php для получения дополнительной информации.
Исходный код: framework/db/CDbCommand.php#1350 (показать)
public function createTable($table, $columns, $options=null)
{
    return 
$this->setText($this->getConnection()->getSchema()->createTable($table, $columns, $options))->execute();
}

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

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

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

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

public CDbCommand crossJoin(string $table)
$table строка таблица, которая должна быть присоединена. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически добавит кавычки к имени таблицы, если оно не содержит скобок (что означает, что таблица задана как подзапрос или выражение БД).
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#941 (показать)
public function crossJoin($table)
{
    return 
$this->joinInternal('cross join', $table);
}

Добавляет часть CROSS JOIN к запросу. Обратите внимание, что не все СУБД поддерживают CROSS JOIN.

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

public integer delete(string $table, mixed $conditions='', array $params=array ( ))
$table строка таблица, из которой будут удалены данные.
$conditions смешанный тип условия, которые будут помещены в часть WHERE. Обратитесь к where для получения информации о том, как задавать условия.
$params массив параметры, которые нужно привязать к запросу.
{return} целое число количество изменённых строк.
Исходный код: framework/db/CDbCommand.php#1325 (показать)
public function delete($table, $conditions='', $params=array())
{
    
$sql='DELETE FROM ' . $this->_connection->quoteTableName($table);
    if((
$where=$this->processConditions($conditions))!='')
        
$sql.=' WHERE '.$where;
    return 
$this->setText($sql)->execute($params);
}

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

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

public integer dropColumn(string $table, string $column)
$table строка таблица, из которой нужно удалить столбец. Имя будет корректно обработано (добавит кавычки).
$column строка имя столбца, который нужно удалить. Имя будет корректно обработано (добавит кавычки).
{return} целое число количество изменённых строк.
Исходный код: framework/db/CDbCommand.php#1415 (показать)
public function dropColumn($table, $column)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropColumn($table, $column))->execute();
}

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

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

public integer dropForeignKey(string $name, string $table)
$name строка имя внешнего ключа, которое нужно удалить. Имя будет корректно обработано (добавлено в кавычки) методом.
$table строка таблица, из которой нужно удалить внешний ключ. Имя будет корректно обработано (добавлено в кавычки).
{return} целое число количество изменённых строк.
Исходный код: framework/db/CDbCommand.php#1473 (показать)
public function dropForeignKey($name, $table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropForeignKey($name, $table))->execute();
}

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

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

public integer dropIndex(string $name, string $table)
$name строка имя индекса, который нужно удалить. Имя будет корректно обрамлено кавычками методом.
$table строка таблица, из которой нужно удалить индекс. Имя будет корректно обрамлено кавычками методом.
{return} целое число количество строк, затронутых выполнением.
Исходный код: framework/db/CDbCommand.php#1500 (показать)
public function dropIndex($name, $table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropIndex($name, $table))->execute();
}

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

dropPrimaryKey() метод (доступен с версии v1.1.13)

public integer dropPrimaryKey(string $name, string $table)
$name строка имя ограничения первичного ключа, которое нужно удалить. Имя будет корректно обрамлено кавычками методом.
$table строка таблица, которая владеет первичным ключом. Имя будет корректно обрамлено кавычками методом.
{return} целое число количество строк, затронутых выполнением.
Исходный код: framework/db/CDbCommand.php#1635 (показать)
public function dropPrimaryKey($name,$table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropPrimaryKey($name,$table))->execute();
}

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

dropTable() метод (доступен с версии v1.1.6)

public integer dropTable(string $table)
$table строка таблица, которую нужно удалить. Имя будет корректно обрамлено кавычками методом.
{return} целое число всегда возвращает 0. См. http://php.net/manual/ru/pdostatement.rowcount.php для получения дополнительной информации.
Исходный код: framework/db/CDbCommand.php#1373 (показать)
public function dropTable($table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropTable($table))->execute();
}

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

execute() метод

public integer execute(array $params=array ( ))
$params массив параметры ввода (имя=>значение) для выполнения SQL-запроса. Это альтернатива методам bindParam и bindValue. Если у вас несколько параметров ввода, передача их таким образом может повысить производительность. Обратите внимание, что если вы передаёте параметры таким образом, вы не можете связывать параметры или значения с помощью bindParam или bindValue, и наоборот. Также обратите внимание, что все значения в этом случае обрабатываются как строки. Если вам нужно, чтобы они обрабатывались как их реальные типы данных, вы должны использовать bindParam или bindValue вместо этого.
{return} целое число количество строк, затронутых выполнением.
Исходный код: framework/db/CDbCommand.php#316 (показать)
public function execute($params=array())
{
    if(
$this->_connection->enableParamLogging && ($pars=array_merge($this->_paramLog,$params))!==array())
    {
        
$p=array();
        foreach(
$pars as $name=>$value)
            
$p[$name]=$name.'='.var_export($value,true);
        
$par='. Bound with ' .implode(', ',$p);
    }
    else
        
$par='';
    
Yii::trace('Executing SQL: '.$this->getText().$par,'system.db.CDbCommand');
    try
    {
        if(
$this->_connection->enableProfiling)
            
Yii::beginProfile('system.db.CDbCommand.execute('.$this->getText().$par.')','system.db.CDbCommand.execute');

        
$this->prepare();
        if(
$params===array())
            
$this->_statement->execute();
        else
            
$this->_statement->execute($params);
        
$n=$this->_statement->rowCount();

        if(
$this->_connection->enableProfiling)
            
Yii::endProfile('system.db.CDbCommand.execute('.$this->getText().$par.')','system.db.CDbCommand.execute');

        return 
$n;
    }
    catch(
Exception $e)
    {
        if(
$this->_connection->enableProfiling)
            
Yii::endProfile('system.db.CDbCommand.execute('.$this->getText().$par.')','system.db.CDbCommand.execute');

        
$errorInfo=$e instanceof PDOException ? $e->errorInfo : null;
        
$message=$e->getMessage();
        
Yii::log(Yii::t('yii','CDbCommand::execute() failed: {error}. The SQL statement executed was: {sql}.',
            array(
'{error}'=>$message, '{sql}'=>$this->getText().$par)),CLogger::LEVEL_ERROR,'system.db.CDbCommand');

        if(
YII_DEBUG)
            
$message.='. The SQL statement executed was: '.$this->getText().$par;

        throw new 
CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}',
            array(
'{error}'=>$message)),(int)$e->getCode(),$errorInfo);
    }
}

Выполняет SQL-запрос. Этот метод предназначен только для выполнения SQL-запросов, не возвращающих результат. Набор результатов не будет возвращён.

from() метод (доступен с версии v1.1.6)

public static from(mixed $tables)
$tables смешанный тип таблица(ы) для выбора. Это может быть строка (например, 'tbl_user') или массив (например, array('tbl_user', 'tbl_profile')), указывающий одно или несколько имён таблиц. Имена таблиц могут содержать префиксы схемы (например, 'public.tbl_user') и/или псевдонимы таблиц (например, 'tbl_user u'). Метод автоматически обрамит имена таблиц кавычками, если они не содержат скобок (что означает, что таблица задана как подзапрос или выражение БД).
{return} статический сам объект команды
Исходный код: framework/db/CDbCommand.php#696 (показать)
public function from($tables)
{
    if(
is_string($tables) && strpos($tables,'(')!==false)
        
$this->_query['from']=$tables;
    else
    {
        if(!
is_array($tables))
            
$tables=preg_split('/\s*,\s*/',trim($tables),-1,PREG_SPLIT_NO_EMPTY);
        foreach(
$tables as $i=>$table)
        {
            if(
strpos($table,'(')===false)
            {
                if(
preg_match('/^(.*?)(?i:\s+as|)\s+([^ ]+)$/',$table,$matches))  // with alias
                    
$tables[$i]=$this->_connection->quoteTableName($matches[1]).' '.$this->_connection->quoteTableName($matches[2]);
                else
                    
$tables[$i]=$this->_connection->quoteTableName($table);
            }
        }
        
$this->_query['from']=implode(', ',$tables);
    }
    return 
$this;
}

Устанавливает часть FROM запроса.

getConnection() метод

public CDbConnection getConnection()
{return} CDbConnection соединение, связанное с этой командой
Исходный код: framework/db/CDbCommand.php#183 (показать)
public function getConnection()
{
    return 
$this->_connection;
}

getDistinct() метод (доступен с версии v1.1.6)

public boolean getDistinct()
{return} логический значение, указывающее, нужно ли использовать SELECT DISTINCT.
Исходный код: framework/db/CDbCommand.php#671 (показать)
public function getDistinct()
{
    return isset(
$this->_query['distinct']) ? $this->_query['distinct'] : false;
}

Возвращает значение, указывающее, нужно ли использовать SELECT DISTINCT.

getFrom() метод (доступен с версии v1.1.6)

public string getFrom()
{return} строка часть FROM (без 'FROM') в запросе.
Исходный код: framework/db/CDbCommand.php#724 (показать)
public function getFrom()
{
    return isset(
$this->_query['from']) ? $this->_query['from'] : '';
}

Возвращает часть FROM в запросе.

getGroup() метод (доступен с версии v1.1.6)

public string getGroup()
{return} строка часть GROUP BY (без 'GROUP BY') в запросе.
Исходный код: framework/db/CDbCommand.php#1025 (показать)
public function getGroup()
{
    return isset(
$this->_query['group']) ? $this->_query['group'] : '';
}

Возвращает часть GROUP BY в запросе.

getHaving() метод (доступен с версии v1.1.6)

public string getHaving()
{return} строка часть HAVING (без 'HAVING') в запросе.
Исходный код: framework/db/CDbCommand.php#1062 (показать)
public function getHaving()
{
    return isset(
$this->_query['having']) ? $this->_query['having'] : '';
}

Возвращает часть HAVING в запросе.

getJoin() метод (доступен с версии v1.1.6)

public mixed getJoin()
{return} смешанный тип часть join в запросе. Это может быть массив, представляющий несколько фрагментов join, или строка, представляющая один фрагмент join. Каждый фрагмент join будет содержать соответствующий оператор join (например, LEFT JOIN).
Исходный код: framework/db/CDbCommand.php#880 (показать)
public function getJoin()
{
    return isset(
$this->_query['join']) ? $this->_query['join'] : '';
}

Возвращает часть join в запросе.

getLimit() метод (доступен с версии v1.1.6)

public string getLimit()
{return} строка часть LIMIT (без 'LIMIT') в запросе.
Исходный код: framework/db/CDbCommand.php#1160 (показать)
public function getLimit()
{
    return isset(
$this->_query['limit']) ? $this->_query['limit'] : -1;
}

Возвращает часть LIMIT в запросе.

getOffset() метод (доступен с версии v1.1.6)

public string getOffset()
{return} строка часть OFFSET (без 'OFFSET') в запросе.
Исходный код: framework/db/CDbCommand.php#1193 (показать)
public function getOffset()
{
    return isset(
$this->_query['offset']) ? $this->_query['offset'] : -1;
}

Возвращает часть OFFSET в запросе.

getOrder() метод (доступен с версии v1.1.6)

public string getOrder()
{return} string часть ORDER BY (без 'ORDER BY') в запросе.
Исходный код: framework/db/CDbCommand.php#1124 (показать)
public function getOrder()
{
    return isset(
$this->_query['order']) ? $this->_query['order'] : '';
}

Возвращает часть ORDER BY в запросе.

getPdoStatement() метод

public PDOStatement getPdoStatement()
{return} PDOStatement базовый объект PDOStatement для данного запроса. Может быть null, если запрос ещё не подготовлен.
Исходный код: framework/db/CDbCommand.php#192 (показать)
public function getPdoStatement()
{
    return 
$this->_statement;
}

getSelect() метод (доступен с версии v1.1.6)

public string getSelect()
{return} string часть SELECT (без 'SELECT') в запросе.
Исходный код: framework/db/CDbCommand.php#637 (показать)
public function getSelect()
{
    return isset(
$this->_query['select']) ? $this->_query['select'] : '';
}

Возвращает часть SELECT в запросе.

getText() метод

public string getText()
{return} string SQL-запрос для выполнения
Исходный код: framework/db/CDbCommand.php#157 (показать)
public function getText()
{
    if(
$this->_text=='' && !empty($this->_query))
        
$this->setText($this->buildQuery($this->_query));
    return 
$this->_text;
}

getUnion() метод (доступен с версии v1.1.6)

public mixed getUnion()
{return} mixed часть UNION (без 'UNION') в запросе. Может быть строкой или массивом, представляющим несколько частей UNION.
Исходный код: framework/db/CDbCommand.php#1231 (показать)
public function getUnion()
{
    return isset(
$this->_query['union']) ? $this->_query['union'] : '';
}

Возвращает часть UNION в запросе.

getWhere() метод (доступен с версии v1.1.6)

public string getWhere()
{return} string часть WHERE (без 'WHERE') в запросе.
Исходный код: framework/db/CDbCommand.php#840 (показать)
public function getWhere()
{
    return isset(
$this->_query['where']) ? $this->_query['where'] : '';
}

Возвращает часть WHERE в запросе.

group() метод (доступен с версии v1.1.6)

public static group(mixed $columns)
$columns mixed столбцы для группировки. Столбцы могут быть указаны в виде строки (например, "id, name") или массива (например, array('id', 'name')). Метод автоматически приводит имена столбцов к каноническому виду, за исключением случаев, когда столбец содержит скобки (то есть, является выражением).
{return} static сам объект команды
Исходный код: framework/db/CDbCommand.php#1000 (показать)
public function group($columns)
{
    if(
is_string($columns) && strpos($columns,'(')!==false)
        
$this->_query['group']=$columns;
    else
    {
        if(!
is_array($columns))
            
$columns=preg_split('/\s*,\s*/',trim($columns),-1,PREG_SPLIT_NO_EMPTY);
        foreach(
$columns as $i=>$column)
        {
            if(
is_object($column))
                
$columns[$i]=(string)$column;
            elseif(
strpos($column,'(')===false)
                
$columns[$i]=$this->_connection->quoteColumnName($column);
        }
        
$this->_query['group']=implode(', ',$columns);
    }
    return 
$this;
}

Устанавливает часть GROUP BY запроса.

having() метод (доступен с версии v1.1.6)

public static having(mixed $conditions, array $params=array ( ))
$conditions mixed условия, которые должны быть помещены после HAVING. См. where, чтобы узнать, как задавать условия.
$params array параметры (имя=>значение) для связывания с запросом
{return} static сам объект команды
Исходный код: framework/db/CDbCommand.php#1049 (показать)
public function having($conditions, $params=array())
{
    
$this->_query['having']=$this->processConditions($conditions);
    foreach(
$params as $name=>$value)
        
$this->params[$name]=$value;
    return 
$this;
}

Устанавливает часть HAVING запроса.

insert() метод (доступен с версии v1.1.6)

public integer insert(string $table, array $columns)
$table string таблица, в которую будут добавлены новые строки.
$columns array данные столбцов (имя=>значение) для вставки в таблицу.
{return} integer количество изменённых строк.
Исходный код: framework/db/CDbCommand.php#1255 (показать)
public function insert($table, $columns)
{
    
$params=array();
    
$names=array();
    
$placeholders=array();
    foreach(
$columns as $name=>$value)
    {
        
$names[]=$this->_connection->quoteColumnName($name);
        if(
$value instanceof CDbExpression)
        {
            
$placeholders[] = $value->expression;
            foreach(
$value->params as $n => $v)
                
$params[$n] = $v;
        }
        else
        {
            
$placeholders[] = ':' . $name;
            
$params[':' . $name] = $value;
        }
    }
    
$sql='INSERT INTO ' . $this->_connection->quoteTableName($table)
        . 
' (' . implode(', ',$names) . ') VALUES ('
        
. implode(', ', $placeholders) . ')';
    return 
$this->setText($sql)->execute($params);
}

Создаёт и выполняет SQL-запрос INSERT. Метод корректно экранирует имена столбцов и связывает значения для вставки.

join() метод (доступен с версии v1.1.6)

public CDbCommand join(string $table, mixed $conditions, array $params=array ( ))
$table string таблица для объединения. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически приводит имя таблицы к каноническому виду, за исключением случаев, когда таблица задаётся в виде подзапроса или выражения.
$conditions mixed условие объединения, которое должно появиться в части ON. См. where, чтобы узнать, как задавать условия.
$params array параметры (имя=>значение) для связывания с запросом
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#868 (показать)
public function join($table, $conditions, $params=array())
{
    return 
$this->joinInternal('join', $table, $conditions, $params);
}

Добавляет часть INNER JOIN к запросу.

leftJoin() метод (доступен с версии v1.1.6)

public CDbCommand leftJoin(string $table, mixed $conditions, array $params=array ( ))
$table string таблица для объединения. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически приводит имя таблицы к каноническому виду, за исключением случаев, когда таблица задаётся в виде подзапроса или выражения.
$conditions mixed условие объединения, которое должно появиться в части ON. См. where, чтобы узнать, как задавать условия.
$params array параметры (имя=>значение) для связывания с запросом
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#909 (показать)
public function leftJoin($table, $conditions, $params=array())
{
    return 
$this->joinInternal('left join', $table, $conditions, $params);
}

Добавляет часть LEFT OUTER JOIN к запросу.

limit() метод (доступен с версии v1.1.6)

public static limit(integer $limit, integer $offset=NULL)
$limit integer предел
$offset integer смещение
{return} static сам объект команды
Исходный код: framework/db/CDbCommand.php#1147 (показать)
public function limit($limit, $offset=null)
{
    
$this->_query['limit']=(int)$limit;
    if(
$offset!==null)
        
$this->offset($offset);
    return 
$this;
}

Устанавливает часть LIMIT запроса.

naturalJoin() метод (доступен с версии v1.1.6)

public CDbCommand naturalJoin(string $table)
$table строка таблица, к которой должно быть выполнено объединение. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически приводит имя таблицы к кавычкам, если оно не содержит скобок (что означает, что таблица задана как подзапрос или выражение базы данных).
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#956 (показать)
public function naturalJoin($table)
{
    return 
$this->joinInternal('natural join', $table);
}

Добавляет часть NATURAL JOIN к запросу. Обратите внимание, что не все СУБД поддерживают NATURAL JOIN.

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

public CDbCommand naturalLeftJoin(string $table)
$table строка таблица, к которой должно быть выполнено объединение. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически приводит имя таблицы к кавычкам, если оно не содержит скобок (что означает, что таблица задана как подзапрос или выражение базы данных).
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#971 (показать)
public function naturalLeftJoin($table)
{
    return 
$this->joinInternal('natural left join', $table);
}

Добавляет часть NATURAL LEFT JOIN к запросу. Обратите внимание, что не все СУБД поддерживают NATURAL LEFT JOIN.

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

public CDbCommand naturalRightJoin(string $table)
$table строка таблица, к которой должно быть выполнено объединение. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически приводит имя таблицы к кавычкам, если оно не содержит скобок (что означает, что таблица задана как подзапрос или выражение базы данных).
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#986 (показать)
public function naturalRightJoin($table)
{
    return 
$this->joinInternal('natural right join', $table);
}

Добавляет часть NATURAL RIGHT JOIN к запросу. Обратите внимание, что не все СУБД поддерживают NATURAL RIGHT JOIN.

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

public static offset(integer $offset)
$offset целое число смещение
{return} статический сам объект команды
Исходный код: framework/db/CDbCommand.php#1182 (показать)
public function offset($offset)
{
    
$this->_query['offset']=(int)$offset;
    return 
$this;
}

Устанавливает часть OFFSET запроса.

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

public static orWhere(mixed $conditions, array $params=array ( ))
$conditions смешанный тип условия, которые должны быть добавлены к части WHERE.
$params массив параметры (имя=>значение) для привязки к запросу.
{return} статический сам объект команды.
Исходный код: framework/db/CDbCommand.php#823 (показать)
public function orWhere($conditions,$params=array())
{
    if(isset(
$this->_query['where']))
        
$this->_query['where']=$this->processConditions(array('OR',$this->_query['where'],$conditions));
    else
        
$this->_query['where']=$this->processConditions($conditions);

    foreach(
$params as $name=>$value)
        
$this->params[$name]=$value;
    return 
$this;
}

Добавляет данное условие к существующей части WHERE запроса с оператором 'ИЛИ'.

Этот метод работает практически так же, как where, за исключением того, что он добавляет условие с оператором 'ИЛИ', а не заменяет его новым. Для получения дополнительной информации о параметрах этого метода обратитесь к документации where.

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

public static order(mixed $columns)
$columns смешанный тип столбцы (и направления) для сортировки. Столбцы могут быть заданы либо строкой (например, "id ASC, name DESC"), либо массивом (например, array('id ASC', 'name DESC')). Метод автоматически приводит имена столбцов к кавычкам, если столбец не содержит скобок (что означает, что столбец содержит выражение базы данных).

Например, чтобы получить "ORDER BY 1", вы должны использовать

$criteria->order('(1)');
{return} статический сам объект команды
Исходный код: framework/db/CDbCommand.php#1094 (показать)
public function order($columns)
{
    if(
is_string($columns) && strpos($columns,'(')!==false)
        
$this->_query['order']=$columns;
    else
    {
        if(!
is_array($columns))
            
$columns=preg_split('/\s*,\s*/',trim($columns),-1,PREG_SPLIT_NO_EMPTY);
        foreach(
$columns as $i=>$column)
        {
            if(
is_object($column))
                
$columns[$i]=(string)$column;
            elseif(
strpos($column,'(')===false)
            {
                if(
preg_match('/^(.*?)\s+(asc|desc)$/i',$column,$matches))
                    
$columns[$i]=$this->_connection->quoteColumnName($matches[1]).' '.strtoupper($matches[2]);
                else
                    
$columns[$i]=$this->_connection->quoteColumnName($column);
            }
        }
        
$this->_query['order']=implode(', ',$columns);
    }
    return 
$this;
}

Устанавливает часть ORDER BY запроса.

prepare() метод

public void prepare()
Исходный код: framework/db/CDbCommand.php#205 (показать)
public function prepare()
{
    if(
$this->_statement==null)
    {
        try
        {
            
$this->_statement=$this->getConnection()->getPdoInstance()->prepare($this->getText());
            
$this->_paramLog=array();
        }
        catch(
Exception $e)
        {
            
Yii::log('Error in preparing SQL: '.$this->getText(),CLogger::LEVEL_ERROR,'system.db.CDbCommand');
            
$errorInfo=$e instanceof PDOException ? $e->errorInfo : null;
            throw new 
CDbException(Yii::t('yii','CDbCommand failed to prepare the SQL statement: {error}',
                array(
'{error}'=>$e->getMessage())),(int)$e->getCode(),$errorInfo);
        }
    }
}

Подготавливает SQL-запрос для выполнения. Для сложных SQL-запросов, которые должны выполняться несколько раз, это может улучшить производительность. Для SQL-запросов с параметрами привязки этот метод вызывается автоматически.

query() метод

public CDbDataReader query(array $params=array ( ))
$params массив входные параметры (имя=>значение) для выполнения SQL. Это альтернатива bindParam и bindValue. Если у вас несколько входных параметров, передача их таким образом может повысить производительность. Обратите внимание, что если вы передаете параметры таким образом, вы не можете привязать параметры или значения с помощью bindParam или bindValue, и наоборот. Также обратите внимание, что все значения в этом случае обрабатываются как строки. Если вам нужно, чтобы они обрабатывались как реальные типы данных, вам необходимо использовать bindParam или bindValue вместо этого.
{return} CDbDataReader объект-читатель для извлечения результата запроса
Исходный код: framework/db/CDbCommand.php#375 (показать)
public function query($params=array())
{
    return 
$this->queryInternal('',0,$params);
}

Выполняет SQL-запрос и возвращает результат запроса. Этот метод предназначен для выполнения SQL-запроса, возвращающего набор результатов.

queryAll() метод

public array queryAll(boolean $fetchAssociative=true, array $params=array ( ))
$fetchAssociative булево указывает, должны ли возвращаться каждый ряд в виде ассоциативного массива с именами столбцов в качестве ключей или ключи массива — индексы столбцов (нумерация с 0).
$params массив входные параметры (имя=>значение) для выполнения SQL. Это альтернатива bindParam и bindValue. Если у вас несколько входных параметров, передача их таким образом может повысить производительность. Обратите внимание, что если вы передаете параметры таким образом, вы не можете привязать параметры или значения с помощью bindParam или bindValue, и наоборот. Также обратите внимание, что все значения в этом случае обрабатываются как строки. Если вам нужно, чтобы они обрабатывались как реальные типы данных, вам необходимо использовать bindParam или bindValue вместо этого.
{return} массив все строки результата запроса. Каждый элемент массива — массив, представляющий строку. Пустой массив возвращается, если запрос ничего не возвращает.
Исходный код: framework/db/CDbCommand.php#394 (показать)
public function queryAll($fetchAssociative=true,$params=array())
{
    return 
$this->queryInternal('fetchAll',$fetchAssociative ? $this->_fetchMode : PDO::FETCH_NUM, $params);
}

Выполняет SQL-запрос и возвращает все строки.

queryColumn() метод

public array queryColumn(array $params=array ( ))
$params array параметры ввода (имя=>значение) для выполнения SQL-запроса. Это альтернатива bindParam и bindValue. Если у вас несколько входных параметров, передача их таким образом может повысить производительность. Обратите внимание, что если вы передаете параметры таким образом, вы не можете привязать параметры или значения с помощью bindParam или bindValue, и наоборот. Также обратите внимание, что все значения в этом случае обрабатываются как строки; если вам необходимо обработать их как реальные типы данных, необходимо использовать bindParam или bindValue.
{return} array первый столбец результата запроса. Пустой массив, если результат отсутствует.
Исходный код: framework/db/CDbCommand.php#453 (показать)
public function queryColumn($params=array())
{
    return 
$this->queryInternal('fetchAll',array(PDO::FETCH_COLUMN, 0),$params);
}

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

queryRow() метод

public mixed queryRow(boolean $fetchAssociative=true, array $params=array ( ))
$fetchAssociative boolean указывает, должна ли строка возвращаться как ассоциативный массив с именами столбцов в качестве ключей или ключи массива являются индексами столбцов (нумерация с 0).
$params array параметры ввода (имя=>значение) для выполнения SQL-запроса. Это альтернатива bindParam и bindValue. Если у вас несколько входных параметров, передача их таким образом может повысить производительность. Обратите внимание, что если вы передаете параметры таким образом, вы не можете привязать параметры или значения с помощью bindParam или bindValue, и наоборот. Также обратите внимание, что все значения в этом случае обрабатываются как строки; если вам необходимо обработать их как реальные типы данных, необходимо использовать bindParam или bindValue.
{return} mixed первая строка (в терминах массива) результата запроса, false, если результат отсутствует.
Исходный код: framework/db/CDbCommand.php#413 (показать)
public function queryRow($fetchAssociative=true,$params=array())
{
    return 
$this->queryInternal('fetch',$fetchAssociative ? $this->_fetchMode : PDO::FETCH_NUM, $params);
}

Выполняет SQL-запрос и возвращает первую строку результата. Это удобный метод query, когда нужна только первая строка данных.

queryScalar() метод

public mixed queryScalar(array $params=array ( ))
$params array параметры ввода (имя=>значение) для выполнения SQL-запроса. Это альтернатива bindParam и bindValue. Если у вас несколько входных параметров, передача их таким образом может повысить производительность. Обратите внимание, что если вы передаете параметры таким образом, вы не можете привязать параметры или значения с помощью bindParam или bindValue, и наоборот. Также обратите внимание, что все значения в этом случае обрабатываются как строки; если вам необходимо обработать их как реальные типы данных, необходимо использовать bindParam или bindValue.
{return} mixed значение первого столбца в первой строке результата запроса. Возвращается False, если значения нет.
Исходный код: framework/db/CDbCommand.php#431 (показать)
public function queryScalar($params=array())
{
    
$result=$this->queryInternal('fetchColumn',0,$params);
    if(
is_resource($result) && get_resource_type($result)==='stream')
        return 
stream_get_contents($result);
    else
        return 
$result;
}

Выполняет SQL-запрос и возвращает значение первого столбца в первой строке данных. Это удобный метод query, когда нужно только одно скалярное значение (например, получение количества записей).

renameColumn() метод (доступен с версии v1.1.6)

public integer renameColumn(string $table, string $name, string $newName)
$table string таблица, имя столбца которой необходимо переименовать. Метод корректно обработает имя.
$name string старое имя столбца. Метод корректно обработает имя.
$newName string новое имя столбца. Метод корректно обработает имя.
{return} integer количество строк, затронутых выполнением.
Исходный код: framework/db/CDbCommand.php#1428 (показать)
public function renameColumn($table, $name, $newName)
{
    return 
$this->setText($this->getConnection()->getSchema()->renameColumn($table, $name, $newName))->execute();
}

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

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

public integer renameTable(string $table, string $newName)
$table string таблица, которую нужно переименовать. Метод корректно обработает имя.
$newName string новое имя таблицы. Метод корректно обработает имя.
{return} integer всегда возвращает 0. См. http://php.net/manual/en/pdostatement.rowcount.php для получения дополнительной информации.
Исходный код: framework/db/CDbCommand.php#1362 (показать)
public function renameTable($table, $newName)
{
    return 
$this->setText($this->getConnection()->getSchema()->renameTable($table, $newName))->execute();
}

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

reset() метод (доступен с версии v1.1.6)

public static reset()
{return} static экземпляр этого объекта команды
Исходный код: framework/db/CDbCommand.php#144 (показать)
public function reset()
{
    
$this->_text=null;
    
$this->_query=null;
    
$this->_statement=null;
    
$this->_paramLog=array();
    
$this->params=array();
    return 
$this;
}

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

rightJoin() метод (доступен с версии v1.1.6)

public CDbCommand rightJoin(string $table, mixed $conditions, array $params=array ( ))
$table string таблица, которая должна быть присоединена. Имя таблицы может содержать префикс схемы (например, 'public.tbl_user') и/или псевдоним таблицы (например, 'tbl_user u'). Метод автоматически обработает имя таблицы, за исключением случаев, когда оно содержит скобки (это означает, что таблица задана как подзапрос или выражение БД).
$conditions mixed условие объединения, которое должно появиться в части ON. Обратитесь к where для указания условий.
$params array параметры (имя=>значение) для привязки к запросу
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#926 (показать)
public function rightJoin($table, $conditions, $params=array())
{
    return 
$this->joinInternal('right join', $table, $conditions, $params);
}

Добавляет часть RIGHT OUTER JOIN к запросу.

select() метод (доступен с версии v1.1.6)

public static select(mixed $columns='*', string $option='')
$columns mixed столбцы, которые должны быть выбраны. По умолчанию — «*», что означает все столбцы. Столбцы могут быть указаны либо в строке (например, «id, name»), либо в массиве (например, array('id', 'name')). Столбцы могут содержать префиксы таблиц (например, «tbl_user.id») и/или псевдонимы столбцов (например, «tbl_user.id AS user_id»). Метод автоматически обработает имена столбцов, за исключением случаев, когда столбец содержит скобки (что означает, что столбец содержит выражение БД).
$option string дополнительный параметр, который должен быть добавлен к ключевому слову «SELECT». Например, в MySQL параметр «SQL_CALC_FOUND_ROWS» может быть использован. Этот параметр поддерживается с версии 1.1.8.
{return} static сам объект команды
Исходный код: framework/db/CDbCommand.php#604 (показать)
public function select($columns='*', $option='')
{
    if(
is_string($columns) && strpos($columns,'(')!==false)
        
$this->_query['select']=$columns;
    else
    {
        if(!
is_array($columns))
            
$columns=preg_split('/\s*,\s*/',trim($columns),-1,PREG_SPLIT_NO_EMPTY);

        foreach(
$columns as $i=>$column)
        {
            if(
is_object($column))
                
$columns[$i]=(string)$column;
            elseif(
strpos($column,'(')===false)
            {
                if(
preg_match('/^(.*?)(?i:\s+as\s+|\s+)(.*)$/',$column,$matches))
                    
$columns[$i]=$this->_connection->quoteColumnName($matches[1]).' AS '.$this->_connection->quoteColumnName($matches[2]);
                else
                    
$columns[$i]=$this->_connection->quoteColumnName($column);
            }
        }
        
$this->_query['select']=implode(', ',$columns);
    }
    if(
$option!='')
        
$this->_query['select']=$option.' '.$this->_query['select'];
    return 
$this;
}

Устанавливает часть SELECT запроса.

selectDistinct() метод (доступен с версии v1.1.6)

public CDbCommand selectDistinct(mixed $columns='*')
$columns mixed выбираемые столбцы. Для получения дополнительной информации смотрите select.
{return} CDbCommand сам объект команды
Исходный код: framework/db/CDbCommand.php#660 (показать)
public function selectDistinct($columns='*')
{
    
$this->_query['distinct']=true;
    return 
$this->select($columns);
}

Устанавливает часть SELECT запроса с включённым флагом DISTINCT. Это то же самое, что и select, за исключением того, что флаг DISTINCT включён.

setDistinct() метод (доступен с версии v1.1.6)

public void setDistinct(boolean $value)
$value boolean значение, указывающее, следует ли использовать SELECT DISTINCT.
Исходный код: framework/db/CDbCommand.php#681 (показать)
public function setDistinct($value)
{
    
$this->_query['distinct']=$value;
}

Устанавливает значение, указывающее, следует ли использовать SELECT DISTINCT.

setFetchMode() метод (доступен с версии v1.1.7)

public static setFetchMode(mixed $mode)
$mode mixed режим извлечения данных
{return} static
Исходный код: framework/db/CDbCommand.php#129 (показать)
public function setFetchMode($mode)
{
    
$params=func_get_args();
    
$this->_fetchMode = $params;
    return 
$this;
}

Установить режим извлечения по умолчанию для этого оператора

См. также

  • http://www.php.net/manual/en/function.PDOStatement-setFetchMode.php

setFrom() метод (доступен с версии v1.1.6)

public void setFrom(mixed $value)
$value mixed таблицы для выбора данных. Подробности о том, как указать этот параметр, см. в from().
Исходный код: framework/db/CDbCommand.php#735 (показать)
public function setFrom($value)
{
    
$this->from($value);
}

Устанавливает часть FROM в запросе.

setGroup() метод (доступен с версии v1.1.6)

public void setGroup(mixed $value)
$value mixed часть GROUP BY. Подробности о том, как указать этот параметр, см. в group().
Исходный код: framework/db/CDbCommand.php#1036 (показать)
public function setGroup($value)
{
    
$this->group($value);
}

Устанавливает часть GROUP BY в запросе.

setHaving() метод (доступен с версии v1.1.6)

public void setHaving(mixed $value)
$value mixed часть HAVING. Подробности о том, как указать этот параметр, см. в having().
Исходный код: framework/db/CDbCommand.php#1073 (показать)
public function setHaving($value)
{
    
$this->having($value);
}

Устанавливает часть HAVING в запросе.

setJoin() метод (доступен с версии v1.1.6)

public void setJoin(mixed $value)
$value mixed часть join в запросе. Это может быть строка или массив, представляющий несколько частей join в запросе. Каждая часть должна содержать правильный оператор join (например, 'LEFT JOIN tbl_profile ON tbl_user.id=tbl_profile.id').
Исходный код: framework/db/CDbCommand.php#892 (показать)
public function setJoin($value)
{
    
$this->_query['join']=$value;
}

Устанавливает часть join в запросе.

setLimit() метод (доступен с версии v1.1.6)

public void setLimit(integer $value)
$value integer часть LIMIT. Подробности о том, как указать этот параметр, см. в limit().
Исходный код: framework/db/CDbCommand.php#1171 (показать)
public function setLimit($value)
{
    
$this->limit($value);
}

Устанавливает часть LIMIT в запросе.

setOffset() метод (доступен с версии v1.1.6)

public void setOffset(integer $value)
$value integer часть OFFSET. Подробности о том, как указать этот параметр, см. в offset().
Исходный код: framework/db/CDbCommand.php#1204 (показать)
public function setOffset($value)
{
    
$this->offset($value);
}

Устанавливает часть OFFSET в запросе.

setOrder() метод (доступен с версии v1.1.6)

public void setOrder(mixed $value)
$value mixed часть ORDER BY. Подробности о том, как указать этот параметр, см. в order().
Исходный код: framework/db/CDbCommand.php#1135 (показать)
public function setOrder($value)
{
    
$this->order($value);
}

Устанавливает часть ORDER BY в запросе.

setSelect() метод (доступен с версии v1.1.6)

public void setSelect(mixed $value)
$value mixed данные для выбора. Подробности о том, как указать этот параметр, см. в select().
Исходный код: framework/db/CDbCommand.php#648 (показать)
public function setSelect($value)
{
    
$this->select($value);
}

Устанавливает часть SELECT в запросе.

setText() метод

public static setText(string $value)
$value string SQL-запрос для выполнения
{return} static экземпляр этой команды
Исходный код: framework/db/CDbCommand.php#170 (показать)
public function setText($value)
{
    if(
$this->_connection->tablePrefix!==null && $value!='')
        
$this->_text=preg_replace('/{{(.*?)}}/',$this->_connection->tablePrefix.'\1',$value);
    else
        
$this->_text=$value;
    
$this->cancel();
    return 
$this;
}

Указывает SQL-запрос для выполнения. Любое предыдущее выполнение будет прервано или отменено.

setUnion() метод (доступен с версии v1.1.6)

public void setUnion(mixed $value)
$value mixed часть UNION. Это может быть строка или массив, представляющий несколько SQL-запросов, которые объединяются вместе.
Исходный код: framework/db/CDbCommand.php#1242 (показать)
public function setUnion($value)
{
    
$this->_query['union']=$value;
}

Устанавливает часть UNION в запросе.

setWhere() метод (доступен с версии v1.1.6)

public void setWhere(mixed $value)
$value mixed часть where. Подробности о том, как указать этот параметр, см. в where().
Исходный код: framework/db/CDbCommand.php#851 (показать)
public function setWhere($value)
{
    
$this->where($value);
}

Устанавливает часть WHERE в запросе.

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

public integer truncateTable(string $table)
$table string таблица, которая будет усечена. Имя будет корректно обработано методом.
{return} integer число строк, затронутых выполнением.
Исходный код: framework/db/CDbCommand.php#1384 (показать)
public function truncateTable($table)
{
    
$schema=$this->getConnection()->getSchema();
    
$n=$this->setText($schema->truncateTable($table))->execute();
    if(
strncasecmp($this->getConnection()->getDriverName(),'sqlite',6)===0)
        
$schema->resetSequence($schema->getTable($table));
    return 
$n;
}

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

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

public static union(string $sql)
$sql строка SQL-запрос, который будет добавлен с помощью UNION
{return} статический сам объект команды
Исходный код: framework/db/CDbCommand.php#1215 (показать)
public function union($sql)
{
    if(isset(
$this->_query['union']) && is_string($this->_query['union']))
        
$this->_query['union']=array($this->_query['union']);

    
$this->_query['union'][]=$sql;

    return 
$this;
}

Добавляет SQL-запрос с помощью оператора UNION.

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

public integer update(string $table, array $columns, mixed $conditions='', array $params=array ( ))
$table строка таблица, которая будет обновлена.
$columns массив данные столбцов (имя=>значение) для обновления.
$conditions смешанный тип условия, которые будут помещены в часть WHERE. Обратитесь к where, чтобы узнать, как задать условия.
$params массив параметры, которые будут связаны с запросом. Не используйте имена столбцов в качестве имён параметров. Они зарезервированы для $columns параметра.
{return} целое число количество строк, затронутых выполнением.
Исходный код: framework/db/CDbCommand.php#1293 (показать)
public function update($table, $columns, $conditions='', $params=array())
{
    
$lines=array();
    foreach(
$columns as $name=>$value)
    {
        if(
$value instanceof CDbExpression)
        {
            
$lines[]=$this->_connection->quoteColumnName($name) . '=' . $value->expression;
            foreach(
$value->params as $n => $v)
                
$params[$n] = $v;
        }
        else
        {
            
$lines[]=$this->_connection->quoteColumnName($name) . '=:' . $name;
            
$params[':' . $name]=$value;
        }
    }
    
$sql='UPDATE ' . $this->_connection->quoteTableName($table) . ' SET ' . implode(', ', $lines);
    if((
$where=$this->processConditions($conditions))!='')
        
$sql.=' WHERE '.$where;
    return 
$this->setText($sql)->execute($params);
}

Создаёт и выполняет SQL-запрос UPDATE. Метод правильно экранирует имена столбцов и связывает обновляемые значения.

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

public static where(mixed $conditions, array $params=array ( ))
$conditions смешанный тип условия, которые должны быть помещены в часть WHERE.
$params массив параметры (имя=>значение) для привязки к запросу
{return} статический сам объект команды
Исходный код: framework/db/CDbCommand.php#778 (показать)
public function where($conditions, $params=array())
{
    
$this->_query['where']=$this->processConditions($conditions);

    foreach(
$params as $name=>$value)
        
$this->params[$name]=$value;
    return 
$this;
}

Устанавливает часть WHERE запроса.

Метод требует параметр $conditions и необязательно параметр $params, указывающий значения, которые должны быть привязаны к запросу.

Параметр $conditions должен быть либо строкой (например, 'id=1'), либо массивом. Если это массив, он должен иметь формат array(operator, operand1, operand2, ...), где оператор может быть одним из следующих, и возможные операнды зависят от соответствующего оператора:

  • and: операнды должны быть конкатенированы вместе с помощью AND. Например, array('and', 'id=1', 'id=2') сгенерирует 'id=1 AND id=2'. Если операнд является массивом, он будет преобразован в строку с теми же правилами, что описаны здесь. Например, array('and', 'type=1', array('or', 'id=1', 'id=2')) сгенерирует 'type=1 AND (id=1 OR id=2)'. Метод НЕ выполнит цитирование или экранирование.
  • or: аналогично оператору and, за исключением того, что операнды конкатенируются с помощью OR.
  • in: операнд 1 должен быть столбцом или выражением БД, а операнд 2 — массивом, представляющим диапазон значений, в котором должен находиться столбец или выражение БД. Например, array('in', 'id', array(1,2,3)) сгенерирует 'id IN (1,2,3)'. Метод правильно цитирует имя столбца и экранирует значения в диапазоне.
  • not in: аналогично оператору in за исключением того, что IN заменяется на NOT IN в сгенерированном условии.
  • like: операнд 1 должен быть столбцом или выражением БД, а операнд 2 — строкой или массивом, представляющим значения, которым должен удовлетворять столбец или выражение БД. Например, array('like', 'name', '%tester%') сгенерирует "name LIKE '%tester%'". Когда диапазон значений задан как массив, несколько предикатов LIKE будут сгенерированы и конкатенированы с помощью AND. Например, array('like', 'name', array('%test%', '%sample%')) сгенерирует "name LIKE '%test%' AND name LIKE '%sample%'". Метод правильно цитирует имя столбца и экранирует значения в диапазоне.
  • not like: аналогично оператору like за исключением того, что LIKE заменяется на NOT LIKE в сгенерированном условии.
  • or like: аналогично оператору like за исключением того, что для конкатенации предикатов LIKE используется OR.
  • or not like: аналогично оператору not like за исключением того, что для конкатенации предикатов NOT LIKE используется OR.

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

Spec-Zone.ru

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