2 followers

CDbCommand

Package system.db
Inheritance class CDbCommand » CComponent
Since 1.0
Source Code framework/db/CDbCommand.php
CDbCommand represents an SQL statement to execute against a database.

It is usually created by calling CDbConnection::createCommand. The SQL statement to be executed may be set via Text.

To execute a non-query SQL (such as insert, delete, update), call execute. To execute an SQL statement that returns result data set (such as SELECT), use query or its convenient versions queryRow, queryColumn, or queryScalar.

If an SQL statement returns results (such as a SELECT SQL), the results can be accessed via the returned CDbDataReader.

CDbCommand supports SQL statement preparation and parameter binding. Call bindParam to bind a PHP variable to a parameter in SQL. Call bindValue to bind a value to an SQL parameter. When binding a parameter, the SQL statement is automatically prepared. You may also call prepare to explicitly prepare an SQL statement.

Starting from version 1.1.6, CDbCommand can also be used as a query builder that builds a SQL statement from code fragments. For example,
$user = Yii::app()->db->createCommand()
    ->select('username, password')
    ->from('tbl_user')
    ->where('id=:id', array(':id'=>1))
    ->queryRow();

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
connection CDbConnection the connection associated with this command CDbCommand
distinct boolean Returns a value indicating whether SELECT DISTINCT should be used. CDbCommand
from string Returns the FROM part in the query. CDbCommand
group string Returns the GROUP BY part in the query. CDbCommand
having string Returns the HAVING part in the query. CDbCommand
join mixed Returns the join part in the query. CDbCommand
limit string Returns the LIMIT part in the query. CDbCommand
offset string Returns the OFFSET part in the query. CDbCommand
order string Returns the ORDER BY part in the query. CDbCommand
params array the parameters (name=>value) to be bound to the current query. CDbCommand
pdoStatement PDOStatement the underlying PDOStatement for this command It could be null if the statement is not prepared yet. CDbCommand
select string Returns the SELECT part in the query. CDbCommand
text string the SQL statement to be executed CDbCommand
union mixed Returns the UNION part in the query. CDbCommand
where string Returns the WHERE part in the query. CDbCommand

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. CComponent
__construct() Constructor. CDbCommand
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__sleep() Set the statement to null when serializing. CDbCommand
__unset() Sets a component property to be null. CComponent
addColumn() Builds and executes a SQL statement for adding a new DB column. CDbCommand
addForeignKey() Builds a SQL statement for adding a foreign key constraint to an existing table. CDbCommand
addPrimaryKey() Builds a SQL statement for creating a primary key constraint. CDbCommand
alterColumn() Builds and executes a SQL statement for changing the definition of a column. CDbCommand
andWhere() Appends given condition to the existing WHERE part of the query with 'AND' operator. CDbCommand
asa() Returns the named behavior object. CComponent
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
bindParam() Binds a parameter to the SQL statement to be executed. CDbCommand
bindValue() Binds a value to a parameter. CDbCommand
bindValues() Binds a list of values to the corresponding parameters. CDbCommand
buildQuery() Builds a SQL SELECT statement from the given query specification. CDbCommand
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
cancel() Cancels the execution of the SQL statement. CDbCommand
createIndex() Builds and executes a SQL statement for creating a new index. CDbCommand
createTable() Builds and executes a SQL statement for creating a new DB table. CDbCommand
crossJoin() Appends a CROSS JOIN part to the query. CDbCommand
delete() Creates and executes a DELETE SQL statement. CDbCommand
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
dropColumn() Builds and executes a SQL statement for dropping a DB column. CDbCommand
dropForeignKey() Builds a SQL statement for dropping a foreign key constraint. CDbCommand
dropIndex() Builds and executes a SQL statement for dropping an index. CDbCommand
dropPrimaryKey() Builds a SQL statement for dropping a primary key constraint. CDbCommand
dropTable() Builds and executes a SQL statement for dropping a DB table. CDbCommand
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
execute() Executes the SQL statement. CDbCommand
from() Sets the FROM part of the query. CDbCommand
getConnection() Returns the connection associated with this command CDbCommand
getDistinct() Returns a value indicating whether SELECT DISTINCT should be used. CDbCommand
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getFrom() Returns the FROM part in the query. CDbCommand
getGroup() Returns the GROUP BY part in the query. CDbCommand
getHaving() Returns the HAVING part in the query. CDbCommand
getJoin() Returns the join part in the query. CDbCommand
getLimit() Returns the LIMIT part in the query. CDbCommand
getOffset() Returns the OFFSET part in the query. CDbCommand
getOrder() Returns the ORDER BY part in the query. CDbCommand
getPdoStatement() Returns the underlying PDOStatement for this command It could be null if the statement is not prepared yet. CDbCommand
getSelect() Returns the SELECT part in the query. CDbCommand
getText() Returns the SQL statement to be executed CDbCommand
getUnion() Returns the UNION part in the query. CDbCommand
getWhere() Returns the WHERE part in the query. CDbCommand
group() Sets the GROUP BY part of the query. CDbCommand
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
having() Sets the HAVING part of the query. CDbCommand
insert() Creates and executes an INSERT SQL statement. CDbCommand
join() Appends an INNER JOIN part to the query. CDbCommand
leftJoin() Appends a LEFT OUTER JOIN part to the query. CDbCommand
limit() Sets the LIMIT part of the query. CDbCommand
naturalJoin() Appends a NATURAL JOIN part to the query. CDbCommand
naturalLeftJoin() Appends a NATURAL LEFT JOIN part to the query. CDbCommand
naturalRightJoin() Appends a NATURAL RIGHT JOIN part to the query. CDbCommand
offset() Sets the OFFSET part of the query. CDbCommand
orWhere() Appends given condition to the existing WHERE part of the query with 'OR' operator. CDbCommand
order() Sets the ORDER BY part of the query. CDbCommand
prepare() Prepares the SQL statement to be executed. CDbCommand
query() Executes the SQL statement and returns query result. CDbCommand
queryAll() Executes the SQL statement and returns all rows. CDbCommand
queryColumn() Executes the SQL statement and returns the first column of the result. CDbCommand
queryRow() Executes the SQL statement and returns the first row of the result. CDbCommand
queryScalar() Executes the SQL statement and returns the value of the first column in the first row of data. CDbCommand
raiseEvent() Raises an event. CComponent
renameColumn() Builds and executes a SQL statement for renaming a column. CDbCommand
renameTable() Builds and executes a SQL statement for renaming a DB table. CDbCommand
reset() Cleans up the command and prepares for building a new query. CDbCommand
rightJoin() Appends a RIGHT OUTER JOIN part to the query. CDbCommand
select() Sets the SELECT part of the query. CDbCommand
selectDistinct() Sets the SELECT part of the query with the DISTINCT flag turned on. CDbCommand
setDistinct() Sets a value indicating whether SELECT DISTINCT should be used. CDbCommand
setFetchMode() Set the default fetch mode for this statement CDbCommand
setFrom() Sets the FROM part in the query. CDbCommand
setGroup() Sets the GROUP BY part in the query. CDbCommand
setHaving() Sets the HAVING part in the query. CDbCommand
setJoin() Sets the join part in the query. CDbCommand
setLimit() Sets the LIMIT part in the query. CDbCommand
setOffset() Sets the OFFSET part in the query. CDbCommand
setOrder() Sets the ORDER BY part in the query. CDbCommand
setSelect() Sets the SELECT part in the query. CDbCommand
setText() Specifies the SQL statement to be executed. CDbCommand
setUnion() Sets the UNION part in the query. CDbCommand
setWhere() Sets the WHERE part in the query. CDbCommand
truncateTable() Builds and executes a SQL statement for truncating a DB table. CDbCommand
union() Appends a SQL statement using UNION operator. CDbCommand
update() Creates and executes an UPDATE SQL statement. CDbCommand
where() Sets the WHERE part of the query. CDbCommand

Property Details

connection property read-only

the connection associated with this command

distinct property (available since v1.1.6)
public boolean getDistinct()
public void setDistinct(boolean $value)

Returns a value indicating whether SELECT DISTINCT should be used.

from property (available since v1.1.6)
public string getFrom()
public void setFrom(mixed $value)

Returns the FROM part in the query.

group property (available since v1.1.6)
public string getGroup()
public void setGroup(mixed $value)

Returns the GROUP BY part in the query.

having property (available since v1.1.6)
public string getHaving()
public void setHaving(mixed $value)

Returns the HAVING part in the query.

join property (available since v1.1.6)
public mixed getJoin()
public void setJoin(mixed $value)

Returns the join part in the query.

limit property (available since v1.1.6)
public string getLimit()
public void setLimit(integer $value)

Returns the LIMIT part in the query.

offset property (available since v1.1.6)
public string getOffset()
public void setOffset(integer $value)

Returns the OFFSET part in the query.

order property (available since v1.1.6)
public string getOrder()
public void setOrder(mixed $value)

Returns the ORDER BY part in the query.

params property (available since v1.1.6)
public array $params;

the parameters (name=>value) to be bound to the current query.

pdoStatement property read-only
public PDOStatement getPdoStatement()

the underlying PDOStatement for this command It could be null if the statement is not prepared yet.

select property (available since v1.1.6)
public string getSelect()
public void setSelect(mixed $value)

Returns the SELECT part in the query.

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

the SQL statement to be executed

union property (available since v1.1.6)
public mixed getUnion()
public void setUnion(mixed $value)

Returns the UNION part in the query.

where property (available since v1.1.6)
public string getWhere()
public void setWhere(mixed $value)

Returns the WHERE part in the query.

Method Details

__construct() method
public void __construct(CDbConnection $connection, mixed $query=NULL)
$connection CDbConnection the database connection
$query mixed the DB query to be executed. This can be either a string representing a SQL statement, or an array whose name-value pairs will be used to set the corresponding properties of the created command object.

For example, you can pass in either 'SELECT * FROM tbl_user' or array('select'=>'*', 'from'=>'tbl_user'). They are equivalent in terms of the final query result.

When passing the query as an array, the following properties are commonly set: select, distinct, from, where, join, group, having, order, limit, offset and union. Please refer to the setter of each of these properties for details about valid property values. This feature has been available since version 1.1.6.

Since 1.1.7 it is possible to use a specific mode of data fetching by setting FetchMode. See http://www.php.net/manual/en/function.PDOStatement-setFetchMode.php for more details.
Source Code: framework/db/CDbCommand.php#100 (show)
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);
}

Constructor.

__sleep() method
public array __sleep()
{return} array
Source Code: framework/db/CDbCommand.php#116 (show)
public function __sleep()
{
    
$this->_statement=null;
    return 
array_keys(get_object_vars($this));
}

Set the statement to null when serializing.

addColumn() method (available since v1.1.6)
public integer addColumn(string $table, string $column, string $type)
$table string the table that the new column will be added to. The table name will be properly quoted by the method.
$column string the name of the new column. The name will be properly quoted by the method.
$type string the column type. The getColumnType method will be invoked to convert abstract column type (if any) into the physical one. Anything that is not recognized as abstract type will be kept in the generated SQL. For example, 'string' will be turned into 'varchar(255)', while 'string not null' will become 'varchar(255) not null'.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1403 (show)
public function addColumn($table$column$type)
{
    return 
$this->setText($this->getConnection()->getSchema()->addColumn($table$column$type))->execute();
}

Builds and executes a SQL statement for adding a new DB column.

addForeignKey() method (available since 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 string the name of the foreign key constraint.
$table string the table that the foreign key constraint will be added to.
$columns string|array the name of the column to that the constraint will be added on. If there are multiple columns, separate them with commas or pass as an array of column names.
$refTable string the table that the foreign key references to.
$refColumns string|array the name of the column that the foreign key references to. If there are multiple columns, separate them with commas or pass as an array of column names.
$delete string the ON DELETE option. Most DBMS support these options: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL
$update string the ON UPDATE option. Most DBMS support these options: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1461 (show)
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();
}

Builds a SQL statement for adding a foreign key constraint to an existing table. The method will properly quote the table and column names.

addPrimaryKey() method (available since v1.1.13)
public integer addPrimaryKey(string $name, string $table, string|array $columns)
$name string the name of the primary key constraint to be created. The name will be properly quoted by the method.
$table string the table who will be inheriting the primary key. The name will be properly quoted by the method.
$columns string|array comma separated string or array of columns that the primary key will consist of. Array value can be passed since 1.1.14.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1623 (show)
public function addPrimaryKey($name,$table,$columns)
{
    return 
$this->setText($this->getConnection()->getSchema()->addPrimaryKey($name,$table,$columns))->execute();
}

Builds a SQL statement for creating a primary key constraint.

alterColumn() method (available since v1.1.6)
public integer alterColumn(string $table, string $column, string $type)
$table string the table whose column is to be changed. The table name will be properly quoted by the method.
$column string the name of the column to be changed. The name will be properly quoted by the method.
$type string the new column type. The getColumnType method will be invoked to convert abstract column type (if any) into the physical one. Anything that is not recognized as abstract type will be kept in the generated SQL. For example, 'string' will be turned into 'varchar(255)', while 'string not null' will become 'varchar(255) not null'.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1443 (show)
public function alterColumn($table$column$type)
{
    return 
$this->setText($this->getConnection()->getSchema()->alterColumn($table$column$type))->execute();
}

Builds and executes a SQL statement for changing the definition of a column.

andWhere() method (available since v1.1.13)
public static andWhere(mixed $conditions, array $params=array ( ))
$conditions mixed the conditions that should be appended to the WHERE part.
$params array the parameters (name=>value) to be bound to the query.
{return} static the command object itself.
Source Code: framework/db/CDbCommand.php#799 (show)
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;
}

Appends given condition to the existing WHERE part of the query with 'AND' operator.

This method works almost the same way as where except the fact that it appends condition with 'AND' operator, but not replaces it with the new one. For more information on parameters of this method refer to the where documentation.

bindParam() method
public static bindParam(mixed $name, mixed &$value, integer $dataType=NULL, integer $length=NULL, mixed $driverOptions=NULL)
$name mixed Parameter identifier. For a prepared statement using named placeholders, this will be a parameter name of the form :name. For a prepared statement using question mark placeholders, this will be the 1-indexed position of the parameter.
$value mixed Name of the PHP variable to bind to the SQL statement parameter
$dataType integer SQL data type of the parameter. If null, the type is determined by the PHP type of the value.
$length integer length of the data type
$driverOptions mixed the driver-specific options (this is available since version 1.1.6)
{return} static the current command being executed
Source Code: framework/db/CDbCommand.php#245 (show)
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;
}

Binds a parameter to the SQL statement to be executed.

bindValue() method
public static bindValue(mixed $name, mixed $value, integer $dataType=NULL)
$name mixed Parameter identifier. For a prepared statement using named placeholders, this will be a parameter name of the form :name. For a prepared statement using question mark placeholders, this will be the 1-indexed position of the parameter.
$value mixed The value to bind to the parameter
$dataType integer SQL data type of the parameter. If null, the type is determined by the PHP type of the value.
{return} static the current command being executed
Source Code: framework/db/CDbCommand.php#271 (show)
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;
}

Binds a value to a parameter.

bindValues() method (available since v1.1.5)
public static bindValues(array $values)
$values array the values to be bound. This must be given in terms of an associative array with array keys being the parameter names, and array values the corresponding parameter values. For example, array(':name'=>'John', ':age'=>25).
{return} static the current command being executed
Source Code: framework/db/CDbCommand.php#292 (show)
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;
}

Binds a list of values to the corresponding parameters. This is similar to bindValue except that it binds multiple values. Note that the SQL data type of each value is determined by its PHP type.

buildQuery() method (available since v1.1.6)
public string buildQuery(array $query)
$query array the query specification in name-value pairs. The following query options are supported: select, distinct, from, where, join, group, having, order, limit, offset and union.
{return} string the SQL statement
Source Code: framework/db/CDbCommand.php#558 (show)
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>=|| $offset>0)
        
$sql=$this->_connection->getCommandBuilder()->applyLimit($sql,$limit,$offset);

    return 
$sql;
}

Builds a SQL SELECT statement from the given query specification.

cancel() method
public void cancel()
Source Code: framework/db/CDbCommand.php#227 (show)
public function cancel()
{
    
$this->_statement=null;
}

Cancels the execution of the SQL statement.

createIndex() method (available since v1.1.6)
public integer createIndex(string $name, string $table, string|array $columns, boolean $unique=false)
$name string the name of the index. The name will be properly quoted by the method.
$table string the table that the new index will be created for. The table name will be properly quoted by the method.
$columns string|array the column(s) that should be included in the index. If there are multiple columns, please separate them by commas or pass as an array of column names. Each column name will be properly quoted by the method, unless a parenthesis is found in the name.
$unique boolean whether to add UNIQUE constraint on the created index.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1488 (show)
public function createIndex($name$table$columns$unique=false)
{
    return 
$this->setText($this->getConnection()->getSchema()->createIndex($name$table$columns$unique))->execute();
}

Builds and executes a SQL statement for creating a new index.

createTable() method (available since v1.1.6)
public integer createTable(string $table, array $columns, string $options=NULL)
$table string the name of the table to be created. The name will be properly quoted by the method.
$columns array the columns (name=>definition) in the new table.
$options string additional SQL fragment that will be appended to the generated SQL.
{return} integer 0 is always returned. See http://php.net/manual/en/pdostatement.rowcount.php for more information.
Source Code: framework/db/CDbCommand.php#1350 (show)
public function createTable($table$columns$options=null)
{
    return 
$this->setText($this->getConnection()->getSchema()->createTable($table$columns$options))->execute();
}

Builds and executes a SQL statement for creating a new DB table.

The columns in the new table should be specified as name-definition pairs (e.g. 'name'=>'string'), where name stands for a column name which will be properly quoted by the method, and definition stands for the column type which can contain an abstract DB type. The getColumnType method will be invoked to convert any abstract type into a physical one.

If a column is specified with definition only (e.g. 'PRIMARY KEY (name, type)'), it will be directly inserted into the generated SQL.

crossJoin() method (available since v1.1.6)
public CDbCommand crossJoin(string $table)
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#941 (show)
public function crossJoin($table)
{
    return 
$this->joinInternal('cross join'$table);
}

Appends a CROSS JOIN part to the query. Note that not all DBMS support CROSS JOIN.

delete() method (available since v1.1.6)
public integer delete(string $table, mixed $conditions='', array $params=array ( ))
$table string the table where the data will be deleted from.
$conditions mixed the conditions that will be put in the WHERE part. Please refer to where on how to specify conditions.
$params array the parameters to be bound to the query.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1325 (show)
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);
}

Creates and executes a DELETE SQL statement.

dropColumn() method (available since v1.1.6)
public integer dropColumn(string $table, string $column)
$table string the table whose column is to be dropped. The name will be properly quoted by the method.
$column string the name of the column to be dropped. The name will be properly quoted by the method.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1415 (show)
public function dropColumn($table$column)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropColumn($table$column))->execute();
}

Builds and executes a SQL statement for dropping a DB column.

dropForeignKey() method (available since v1.1.6)
public integer dropForeignKey(string $name, string $table)
$name string the name of the foreign key constraint to be dropped. The name will be properly quoted by the method.
$table string the table whose foreign is to be dropped. The name will be properly quoted by the method.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1473 (show)
public function dropForeignKey($name$table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropForeignKey($name$table))->execute();
}

Builds a SQL statement for dropping a foreign key constraint.

dropIndex() method (available since v1.1.6)
public integer dropIndex(string $name, string $table)
$name string the name of the index to be dropped. The name will be properly quoted by the method.
$table string the table whose index is to be dropped. The name will be properly quoted by the method.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1500 (show)
public function dropIndex($name$table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropIndex($name$table))->execute();
}

Builds and executes a SQL statement for dropping an index.

dropPrimaryKey() method (available since v1.1.13)
public integer dropPrimaryKey(string $name, string $table)
$name string the name of the primary key constraint to be dropped. The name will be properly quoted by the method.
$table string the table that owns the primary key. The name will be properly quoted by the method.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1635 (show)
public function dropPrimaryKey($name,$table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropPrimaryKey($name,$table))->execute();
}

Builds a SQL statement for dropping a primary key constraint.

dropTable() method (available since v1.1.6)
public integer dropTable(string $table)
$table string the table to be dropped. The name will be properly quoted by the method.
{return} integer 0 is always returned. See http://php.net/manual/en/pdostatement.rowcount.php for more information.
Source Code: framework/db/CDbCommand.php#1373 (show)
public function dropTable($table)
{
    return 
$this->setText($this->getConnection()->getSchema()->dropTable($table))->execute();
}

Builds and executes a SQL statement for dropping a DB table.

execute() method
public integer execute(array $params=array ( ))
$params array input parameters (name=>value) for the SQL execution. This is an alternative to bindParam and bindValue. If you have multiple input parameters, passing them in this way can improve the performance. Note that if you pass parameters in this way, you cannot bind parameters or values using bindParam or bindValue, and vice versa. Please also note that all values are treated as strings in this case, if you need them to be handled as their real data types, you have to use bindParam or bindValue instead.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#316 (show)
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);
    }
}

Executes the SQL statement. This method is meant only for executing non-query SQL statement. No result set will be returned.

from() method (available since v1.1.6)
public static from(mixed $tables)
$tables mixed the table(s) to be selected from. This can be either a string (e.g. 'tbl_user') or an array (e.g. array('tbl_user', 'tbl_profile')) specifying one or several table names. Table names can contain schema prefixes (e.g. 'public.tbl_user') and/or table aliases (e.g. 'tbl_user u'). The method will automatically quote the table names unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#696 (show)
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;
}

Sets the FROM part of the query.

getConnection() method
public CDbConnection getConnection()
{return} CDbConnection the connection associated with this command
Source Code: framework/db/CDbCommand.php#183 (show)
public function getConnection()
{
    return 
$this->_connection;
}

getDistinct() method (available since v1.1.6)
public boolean getDistinct()
{return} boolean a value indicating whether SELECT DISTINCT should be used.
Source Code: framework/db/CDbCommand.php#671 (show)
public function getDistinct()
{
    return isset(
$this->_query['distinct']) ? $this->_query['distinct'] : false;
}

Returns a value indicating whether SELECT DISTINCT should be used.

getFrom() method (available since v1.1.6)
public string getFrom()
{return} string the FROM part (without 'FROM' ) in the query.
Source Code: framework/db/CDbCommand.php#724 (show)
public function getFrom()
{
    return isset(
$this->_query['from']) ? $this->_query['from'] : '';
}

Returns the FROM part in the query.

getGroup() method (available since v1.1.6)
public string getGroup()
{return} string the GROUP BY part (without 'GROUP BY' ) in the query.
Source Code: framework/db/CDbCommand.php#1025 (show)
public function getGroup()
{
    return isset(
$this->_query['group']) ? $this->_query['group'] : '';
}

Returns the GROUP BY part in the query.

getHaving() method (available since v1.1.6)
public string getHaving()
{return} string the HAVING part (without 'HAVING' ) in the query.
Source Code: framework/db/CDbCommand.php#1062 (show)
public function getHaving()
{
    return isset(
$this->_query['having']) ? $this->_query['having'] : '';
}

Returns the HAVING part in the query.

getJoin() method (available since v1.1.6)
public mixed getJoin()
{return} mixed the join part in the query. This can be an array representing multiple join fragments, or a string representing a single join fragment. Each join fragment will contain the proper join operator (e.g. LEFT JOIN).
Source Code: framework/db/CDbCommand.php#880 (show)
public function getJoin()
{
    return isset(
$this->_query['join']) ? $this->_query['join'] : '';
}

Returns the join part in the query.

getLimit() method (available since v1.1.6)
public string getLimit()
{return} string the LIMIT part (without 'LIMIT' ) in the query.
Source Code: framework/db/CDbCommand.php#1160 (show)
public function getLimit()
{
    return isset(
$this->_query['limit']) ? $this->_query['limit'] : -1;
}

Returns the LIMIT part in the query.

getOffset() method (available since v1.1.6)
public string getOffset()
{return} string the OFFSET part (without 'OFFSET' ) in the query.
Source Code: framework/db/CDbCommand.php#1193 (show)
public function getOffset()
{
    return isset(
$this->_query['offset']) ? $this->_query['offset'] : -1;
}

Returns the OFFSET part in the query.

getOrder() method (available since v1.1.6)
public string getOrder()
{return} string the ORDER BY part (without 'ORDER BY' ) in the query.
Source Code: framework/db/CDbCommand.php#1124 (show)
public function getOrder()
{
    return isset(
$this->_query['order']) ? $this->_query['order'] : '';
}

Returns the ORDER BY part in the query.

getPdoStatement() method
public PDOStatement getPdoStatement()
{return} PDOStatement the underlying PDOStatement for this command It could be null if the statement is not prepared yet.
Source Code: framework/db/CDbCommand.php#192 (show)
public function getPdoStatement()
{
    return 
$this->_statement;
}

getSelect() method (available since v1.1.6)
public string getSelect()
{return} string the SELECT part (without 'SELECT') in the query.
Source Code: framework/db/CDbCommand.php#637 (show)
public function getSelect()
{
    return isset(
$this->_query['select']) ? $this->_query['select'] : '';
}

Returns the SELECT part in the query.

getText() method
public string getText()
{return} string the SQL statement to be executed
Source Code: framework/db/CDbCommand.php#157 (show)
public function getText()
{
    if(
$this->_text=='' && !empty($this->_query))
        
$this->setText($this->buildQuery($this->_query));
    return 
$this->_text;
}

getUnion() method (available since v1.1.6)
public mixed getUnion()
{return} mixed the UNION part (without 'UNION' ) in the query. This can be either a string or an array representing multiple union parts.
Source Code: framework/db/CDbCommand.php#1231 (show)
public function getUnion()
{
    return isset(
$this->_query['union']) ? $this->_query['union'] : '';
}

Returns the UNION part in the query.

getWhere() method (available since v1.1.6)
public string getWhere()
{return} string the WHERE part (without 'WHERE' ) in the query.
Source Code: framework/db/CDbCommand.php#840 (show)
public function getWhere()
{
    return isset(
$this->_query['where']) ? $this->_query['where'] : '';
}

Returns the WHERE part in the query.

group() method (available since v1.1.6)
public static group(mixed $columns)
$columns mixed the columns to be grouped by. Columns can be specified in either a string (e.g. "id, name") or an array (e.g. array('id', 'name')). The method will automatically quote the column names unless a column contains some parenthesis (which means the column contains a DB expression).
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#1000 (show)
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;
}

Sets the GROUP BY part of the query.

having() method (available since v1.1.6)
public static having(mixed $conditions, array $params=array ( ))
$conditions mixed the conditions to be put after HAVING. Please refer to where on how to specify conditions.
$params array the parameters (name=>value) to be bound to the query
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#1049 (show)
public function having($conditions$params=array())
{
    
$this->_query['having']=$this->processConditions($conditions);
    foreach(
$params as $name=>$value)
        
$this->params[$name]=$value;
    return 
$this;
}

Sets the HAVING part of the query.

insert() method (available since v1.1.6)
public integer insert(string $table, array $columns)
$table string the table that new rows will be inserted into.
$columns array the column data (name=>value) to be inserted into the table.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1255 (show)
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);
}

Creates and executes an INSERT SQL statement. The method will properly escape the column names, and bind the values to be inserted.

join() method (available since v1.1.6)
public CDbCommand join(string $table, mixed $conditions, array $params=array ( ))
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
$conditions mixed the join condition that should appear in the ON part. Please refer to where on how to specify conditions.
$params array the parameters (name=>value) to be bound to the query
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#868 (show)
public function join($table$conditions$params=array())
{
    return 
$this->joinInternal('join'$table$conditions$params);
}

Appends an INNER JOIN part to the query.

leftJoin() method (available since v1.1.6)
public CDbCommand leftJoin(string $table, mixed $conditions, array $params=array ( ))
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
$conditions mixed the join condition that should appear in the ON part. Please refer to where on how to specify conditions.
$params array the parameters (name=>value) to be bound to the query
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#909 (show)
public function leftJoin($table$conditions$params=array())
{
    return 
$this->joinInternal('left join'$table$conditions$params);
}

Appends a LEFT OUTER JOIN part to the query.

limit() method (available since v1.1.6)
public static limit(integer $limit, integer $offset=NULL)
$limit integer the limit
$offset integer the offset
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#1147 (show)
public function limit($limit$offset=null)
{
    
$this->_query['limit']=(int)$limit;
    if(
$offset!==null)
        
$this->offset($offset);
    return 
$this;
}

Sets the LIMIT part of the query.

naturalJoin() method (available since v1.1.6)
public CDbCommand naturalJoin(string $table)
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#956 (show)
public function naturalJoin($table)
{
    return 
$this->joinInternal('natural join'$table);
}

Appends a NATURAL JOIN part to the query. Note that not all DBMS support NATURAL JOIN.

naturalLeftJoin() method (available since v1.1.16)
public CDbCommand naturalLeftJoin(string $table)
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#971 (show)
public function naturalLeftJoin($table)
{
    return 
$this->joinInternal('natural left join'$table);
}

Appends a NATURAL LEFT JOIN part to the query. Note that not all DBMS support NATURAL LEFT JOIN.

naturalRightJoin() method (available since v1.1.16)
public CDbCommand naturalRightJoin(string $table)
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#986 (show)
public function naturalRightJoin($table)
{
    return 
$this->joinInternal('natural right join'$table);
}

Appends a NATURAL RIGHT JOIN part to the query. Note that not all DBMS support NATURAL RIGHT JOIN.

offset() method (available since v1.1.6)
public static offset(integer $offset)
$offset integer the offset
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#1182 (show)
public function offset($offset)
{
    
$this->_query['offset']=(int)$offset;
    return 
$this;
}

Sets the OFFSET part of the query.

orWhere() method (available since v1.1.13)
public static orWhere(mixed $conditions, array $params=array ( ))
$conditions mixed the conditions that should be appended to the WHERE part.
$params array the parameters (name=>value) to be bound to the query.
{return} static the command object itself.
Source Code: framework/db/CDbCommand.php#823 (show)
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;
}

Appends given condition to the existing WHERE part of the query with 'OR' operator.

This method works almost the same way as where except the fact that it appends condition with 'OR' operator, but not replaces it with the new one. For more information on parameters of this method refer to the where documentation.

order() method (available since v1.1.6)
public static order(mixed $columns)
$columns mixed the columns (and the directions) to be ordered by. Columns can be specified in either a string (e.g. "id ASC, name DESC") or an array (e.g. array('id ASC', 'name DESC')). The method will automatically quote the column names unless a column contains some parenthesis (which means the column contains a DB expression).

For example, to get "ORDER BY 1" you should use

$criteria->order('(1)');
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#1094 (show)
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;
}

Sets the ORDER BY part of the query.

prepare() method
public void prepare()
Source Code: framework/db/CDbCommand.php#205 (show)
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);
        }
    }
}

Prepares the SQL statement to be executed. For complex SQL statement that is to be executed multiple times, this may improve performance. For SQL statement with binding parameters, this method is invoked automatically.

query() method
public CDbDataReader query(array $params=array ( ))
$params array input parameters (name=>value) for the SQL execution. This is an alternative to bindParam and bindValue. If you have multiple input parameters, passing them in this way can improve the performance. Note that if you pass parameters in this way, you cannot bind parameters or values using bindParam or bindValue, and vice versa. Please also note that all values are treated as strings in this case, if you need them to be handled as their real data types, you have to use bindParam or bindValue instead.
{return} CDbDataReader the reader object for fetching the query result
Source Code: framework/db/CDbCommand.php#375 (show)
public function query($params=array())
{
    return 
$this->queryInternal('',0,$params);
}

Executes the SQL statement and returns query result. This method is for executing an SQL query that returns result set.

queryAll() method
public array queryAll(boolean $fetchAssociative=true, array $params=array ( ))
$fetchAssociative boolean whether each row should be returned as an associated array with column names as the keys or the array keys are column indexes (0-based).
$params array input parameters (name=>value) for the SQL execution. This is an alternative to bindParam and bindValue. If you have multiple input parameters, passing them in this way can improve the performance. Note that if you pass parameters in this way, you cannot bind parameters or values using bindParam or bindValue, and vice versa. Please also note that all values are treated as strings in this case, if you need them to be handled as their real data types, you have to use bindParam or bindValue instead.
{return} array all rows of the query result. Each array element is an array representing a row. An empty array is returned if the query results in nothing.
Source Code: framework/db/CDbCommand.php#394 (show)
public function queryAll($fetchAssociative=true,$params=array())
{
    return 
$this->queryInternal('fetchAll',$fetchAssociative $this->_fetchMode PDO::FETCH_NUM$params);
}

Executes the SQL statement and returns all rows.

queryColumn() method
public array queryColumn(array $params=array ( ))
$params array input parameters (name=>value) for the SQL execution. This is an alternative to bindParam and bindValue. If you have multiple input parameters, passing them in this way can improve the performance. Note that if you pass parameters in this way, you cannot bind parameters or values using bindParam or bindValue, and vice versa. Please also note that all values are treated as strings in this case, if you need them to be handled as their real data types, you have to use bindParam or bindValue instead.
{return} array the first column of the query result. Empty array if no result.
Source Code: framework/db/CDbCommand.php#453 (show)
public function queryColumn($params=array())
{
    return 
$this->queryInternal('fetchAll',array(PDO::FETCH_COLUMN0),$params);
}

Executes the SQL statement and returns the first column of the result. This is a convenient method of query when only the first column of data is needed. Note, the column returned will contain the first element in each row of result.

queryRow() method
public mixed queryRow(boolean $fetchAssociative=true, array $params=array ( ))
$fetchAssociative boolean whether the row should be returned as an associated array with column names as the keys or the array keys are column indexes (0-based).
$params array input parameters (name=>value) for the SQL execution. This is an alternative to bindParam and bindValue. If you have multiple input parameters, passing them in this way can improve the performance. Note that if you pass parameters in this way, you cannot bind parameters or values using bindParam or bindValue, and vice versa. Please also note that all values are treated as strings in this case, if you need them to be handled as their real data types, you have to use bindParam or bindValue instead.
{return} mixed the first row (in terms of an array) of the query result, false if no result.
Source Code: framework/db/CDbCommand.php#413 (show)
public function queryRow($fetchAssociative=true,$params=array())
{
    return 
$this->queryInternal('fetch',$fetchAssociative $this->_fetchMode PDO::FETCH_NUM$params);
}

Executes the SQL statement and returns the first row of the result. This is a convenient method of query when only the first row of data is needed.

queryScalar() method
public mixed queryScalar(array $params=array ( ))
$params array input parameters (name=>value) for the SQL execution. This is an alternative to bindParam and bindValue. If you have multiple input parameters, passing them in this way can improve the performance. Note that if you pass parameters in this way, you cannot bind parameters or values using bindParam or bindValue, and vice versa. Please also note that all values are treated as strings in this case, if you need them to be handled as their real data types, you have to use bindParam or bindValue instead.
{return} mixed the value of the first column in the first row of the query result. False is returned if there is no value.
Source Code: framework/db/CDbCommand.php#431 (show)
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;
}

Executes the SQL statement and returns the value of the first column in the first row of data. This is a convenient method of query when only a single scalar value is needed (e.g. obtaining the count of the records).

renameColumn() method (available since v1.1.6)
public integer renameColumn(string $table, string $name, string $newName)
$table string the table whose column is to be renamed. The name will be properly quoted by the method.
$name string the old name of the column. The name will be properly quoted by the method.
$newName string the new name of the column. The name will be properly quoted by the method.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1428 (show)
public function renameColumn($table$name$newName)
{
    return 
$this->setText($this->getConnection()->getSchema()->renameColumn($table$name$newName))->execute();
}

Builds and executes a SQL statement for renaming a column.

renameTable() method (available since v1.1.6)
public integer renameTable(string $table, string $newName)
$table string the table to be renamed. The name will be properly quoted by the method.
$newName string the new table name. The name will be properly quoted by the method.
{return} integer 0 is always returned. See http://php.net/manual/en/pdostatement.rowcount.php for more information.
Source Code: framework/db/CDbCommand.php#1362 (show)
public function renameTable($table$newName)
{
    return 
$this->setText($this->getConnection()->getSchema()->renameTable($table$newName))->execute();
}

Builds and executes a SQL statement for renaming a DB table.

reset() method (available since v1.1.6)
public static reset()
{return} static this command instance
Source Code: framework/db/CDbCommand.php#144 (show)
public function reset()
{
    
$this->_text=null;
    
$this->_query=null;
    
$this->_statement=null;
    
$this->_paramLog=array();
    
$this->params=array();
    return 
$this;
}

Cleans up the command and prepares for building a new query. This method is mainly used when a command object is being reused multiple times for building different queries. Calling this method will clean up all internal states of the command object.

rightJoin() method (available since v1.1.6)
public CDbCommand rightJoin(string $table, mixed $conditions, array $params=array ( ))
$table string the table to be joined. Table name can contain schema prefix (e.g. 'public.tbl_user') and/or table alias (e.g. 'tbl_user u'). The method will automatically quote the table name unless it contains some parenthesis (which means the table is given as a sub-query or DB expression).
$conditions mixed the join condition that should appear in the ON part. Please refer to where on how to specify conditions.
$params array the parameters (name=>value) to be bound to the query
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#926 (show)
public function rightJoin($table$conditions$params=array())
{
    return 
$this->joinInternal('right join'$table$conditions$params);
}

Appends a RIGHT OUTER JOIN part to the query.

select() method (available since v1.1.6)
public static select(mixed $columns='*', string $option='')
$columns mixed the columns to be selected. Defaults to '*', meaning all columns. Columns can be specified in either a string (e.g. "id, name") or an array (e.g. array('id', 'name')). Columns can contain table prefixes (e.g. "tbl_user.id") and/or column aliases (e.g. "tbl_user.id AS user_id"). The method will automatically quote the column names unless a column contains some parenthesis (which means the column contains a DB expression).
$option string additional option that should be appended to the 'SELECT' keyword. For example, in MySQL, the option 'SQL_CALC_FOUND_ROWS' can be used. This parameter is supported since version 1.1.8.
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#604 (show)
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;
}

Sets the SELECT part of the query.

selectDistinct() method (available since v1.1.6)
public CDbCommand selectDistinct(mixed $columns='*')
$columns mixed the columns to be selected. See select for more details.
{return} CDbCommand the command object itself
Source Code: framework/db/CDbCommand.php#660 (show)
public function selectDistinct($columns='*')
{
    
$this->_query['distinct']=true;
    return 
$this->select($columns);
}

Sets the SELECT part of the query with the DISTINCT flag turned on. This is the same as select except that the DISTINCT flag is turned on.

setDistinct() method (available since v1.1.6)
public void setDistinct(boolean $value)
$value boolean a value indicating whether SELECT DISTINCT should be used.
Source Code: framework/db/CDbCommand.php#681 (show)
public function setDistinct($value)
{
    
$this->_query['distinct']=$value;
}

Sets a value indicating whether SELECT DISTINCT should be used.

setFetchMode() method (available since v1.1.7)
public static setFetchMode(mixed $mode)
$mode mixed fetch mode
{return} static
Source Code: framework/db/CDbCommand.php#129 (show)
public function setFetchMode($mode)
{
    
$params=func_get_args();
    
$this->_fetchMode $params;
    return 
$this;
}

Set the default fetch mode for this statement

setFrom() method (available since v1.1.6)
public void setFrom(mixed $value)
$value mixed the tables to be selected from. Please refer to from() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#735 (show)
public function setFrom($value)
{
    
$this->from($value);
}

Sets the FROM part in the query.

setGroup() method (available since v1.1.6)
public void setGroup(mixed $value)
$value mixed the GROUP BY part. Please refer to group() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#1036 (show)
public function setGroup($value)
{
    
$this->group($value);
}

Sets the GROUP BY part in the query.

setHaving() method (available since v1.1.6)
public void setHaving(mixed $value)
$value mixed the HAVING part. Please refer to having() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#1073 (show)
public function setHaving($value)
{
    
$this->having($value);
}

Sets the HAVING part in the query.

setJoin() method (available since v1.1.6)
public void setJoin(mixed $value)
$value mixed the join part in the query. This can be either a string or an array representing multiple join parts in the query. Each part must contain the proper join operator (e.g. 'LEFT JOIN tbl_profile ON tbl_user.id=tbl_profile.id')
Source Code: framework/db/CDbCommand.php#892 (show)
public function setJoin($value)
{
    
$this->_query['join']=$value;
}

Sets the join part in the query.

setLimit() method (available since v1.1.6)
public void setLimit(integer $value)
$value integer the LIMIT part. Please refer to limit() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#1171 (show)
public function setLimit($value)
{
    
$this->limit($value);
}

Sets the LIMIT part in the query.

setOffset() method (available since v1.1.6)
public void setOffset(integer $value)
$value integer the OFFSET part. Please refer to offset() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#1204 (show)
public function setOffset($value)
{
    
$this->offset($value);
}

Sets the OFFSET part in the query.

setOrder() method (available since v1.1.6)
public void setOrder(mixed $value)
$value mixed the ORDER BY part. Please refer to order() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#1135 (show)
public function setOrder($value)
{
    
$this->order($value);
}

Sets the ORDER BY part in the query.

setSelect() method (available since v1.1.6)
public void setSelect(mixed $value)
$value mixed the data to be selected. Please refer to select() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#648 (show)
public function setSelect($value)
{
    
$this->select($value);
}

Sets the SELECT part in the query.

setText() method
public static setText(string $value)
$value string the SQL statement to be executed
{return} static this command instance
Source Code: framework/db/CDbCommand.php#170 (show)
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;
}

Specifies the SQL statement to be executed. Any previous execution will be terminated or cancel.

setUnion() method (available since v1.1.6)
public void setUnion(mixed $value)
$value mixed the UNION part. This can be either a string or an array representing multiple SQL statements to be unioned together.
Source Code: framework/db/CDbCommand.php#1242 (show)
public function setUnion($value)
{
    
$this->_query['union']=$value;
}

Sets the UNION part in the query.

setWhere() method (available since v1.1.6)
public void setWhere(mixed $value)
$value mixed the where part. Please refer to where() for details on how to specify this parameter.
Source Code: framework/db/CDbCommand.php#851 (show)
public function setWhere($value)
{
    
$this->where($value);
}

Sets the WHERE part in the query.

truncateTable() method (available since v1.1.6)
public integer truncateTable(string $table)
$table string the table to be truncated. The name will be properly quoted by the method.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1384 (show)
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;
}

Builds and executes a SQL statement for truncating a DB table.

union() method (available since v1.1.6)
public static union(string $sql)
$sql string the SQL statement to be appended using UNION
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#1215 (show)
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;
}

Appends a SQL statement using UNION operator.

update() method (available since v1.1.6)
public integer update(string $table, array $columns, mixed $conditions='', array $params=array ( ))
$table string the table to be updated.
$columns array the column data (name=>value) to be updated.
$conditions mixed the conditions that will be put in the WHERE part. Please refer to where on how to specify conditions.
$params array the parameters to be bound to the query. Do not use column names as parameter names here. They are reserved for $columns parameter.
{return} integer number of rows affected by the execution.
Source Code: framework/db/CDbCommand.php#1293 (show)
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);
}

Creates and executes an UPDATE SQL statement. The method will properly escape the column names and bind the values to be updated.

where() method (available since v1.1.6)
public static where(mixed $conditions, array $params=array ( ))
$conditions mixed the conditions that should be put in the WHERE part.
$params array the parameters (name=>value) to be bound to the query
{return} static the command object itself
Source Code: framework/db/CDbCommand.php#778 (show)
public function where($conditions$params=array())
{
    
$this->_query['where']=$this->processConditions($conditions);

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

Sets the WHERE part of the query.

The method requires a $conditions parameter, and optionally a $params parameter specifying the values to be bound to the query.

The $conditions parameter should be either a string (e.g. 'id=1') or an array. If the latter, it must be of the format array(operator, operand1, operand2, ...), where the operator can be one of the followings, and the possible operands depend on the corresponding operator:

  • and: the operands should be concatenated together using AND. For example, array('and', 'id=1', 'id=2') will generate 'id=1 AND id=2'. If an operand is an array, it will be converted into a string using the same rules described here. For example, array('and', 'type=1', array('or', 'id=1', 'id=2')) will generate 'type=1 AND (id=1 OR id=2)'. The method will NOT do any quoting or escaping.
  • or: similar as the and operator except that the operands are concatenated using OR.
  • in: operand 1 should be a column or DB expression, and operand 2 be an array representing the range of the values that the column or DB expression should be in. For example, array('in', 'id', array(1,2,3)) will generate 'id IN (1,2,3)'. The method will properly quote the column name and escape values in the range.
  • not in: similar as the in operator except that IN is replaced with NOT IN in the generated condition.
  • like: operand 1 should be a column or DB expression, and operand 2 be a string or an array representing the values that the column or DB expression should be like. For example, array('like', 'name', '%tester%') will generate "name LIKE '%tester%'". When the value range is given as an array, multiple LIKE predicates will be generated and concatenated using AND. For example, array('like', 'name', array('%test%', '%sample%')) will generate "name LIKE '%test%' AND name LIKE '%sample%'". The method will properly quote the column name and escape values in the range.
  • not like: similar as the like operator except that LIKE is replaced with NOT LIKE in the generated condition.
  • or like: similar as the like operator except that OR is used to concatenated the LIKE predicates.
  • or not like: similar as the not like operator except that OR is used to concatenated the NOT LIKE predicates.