Package | system.db |
---|---|
Inheritance | class CDbCommand » CComponent |
Since | 1.0 |
Source Code | framework/db/CDbCommand.php |
$user = Yii::app()->db->createCommand() ->select('username, password') ->from('tbl_user') ->where('id=:id', array(':id'=>1)) ->queryRow();
Property | Type | Description | Defined 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 |
Method | Description | Defined 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 |
the connection associated with this command
Returns a value indicating whether SELECT DISTINCT should be used.
Returns the FROM part in the query.
Returns the GROUP BY part in the query.
Returns the HAVING part in the query.
Returns the join part in the query.
Returns the LIMIT part in the query.
Returns the OFFSET part in the query.
Returns the ORDER BY part in the query.
the parameters (name=>value) to be bound to the current query.
the underlying PDOStatement for this command It could be null if the statement is not prepared yet.
Returns the SELECT part in the query.
the SQL statement to be executed
Returns the UNION part in the query.
Returns the WHERE part in the query.
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. |
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.
public array __sleep()
| ||
{return} | array |
public function __sleep()
{
$this->_statement=null;
return array_keys(get_object_vars($this));
}
Set the statement to null when serializing.
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. |
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.
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. |
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.
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. |
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.
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. |
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.
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. |
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.
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 |
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.
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 |
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.
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 |
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.
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 |
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;
}
Builds a SQL SELECT statement from the given query specification.
public void cancel()
|
public function cancel()
{
$this->_statement=null;
}
Cancels the execution of the SQL statement.
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. |
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.
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. |
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.
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 |
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.
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. |
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.
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. |
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.
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. |
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.
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. |
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.
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. |
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.
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. |
public function dropTable($table)
{
return $this->setText($this->getConnection()->getSchema()->dropTable($table))->execute();
}
Builds and executes a SQL statement for dropping a DB table.
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. |
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.
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 |
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.
public CDbConnection getConnection()
| ||
{return} | CDbConnection | the connection associated with this command |
public function getConnection()
{
return $this->_connection;
}
public boolean getDistinct()
| ||
{return} | boolean | a value indicating whether SELECT DISTINCT should be used. |
public function getDistinct()
{
return isset($this->_query['distinct']) ? $this->_query['distinct'] : false;
}
Returns a value indicating whether SELECT DISTINCT should be used.
public string getFrom()
| ||
{return} | string | the FROM part (without 'FROM' ) in the query. |
public function getFrom()
{
return isset($this->_query['from']) ? $this->_query['from'] : '';
}
Returns the FROM part in the query.
public string getGroup()
| ||
{return} | string | the GROUP BY part (without 'GROUP BY' ) in the query. |
public function getGroup()
{
return isset($this->_query['group']) ? $this->_query['group'] : '';
}
Returns the GROUP BY part in the query.
public string getHaving()
| ||
{return} | string | the HAVING part (without 'HAVING' ) in the query. |
public function getHaving()
{
return isset($this->_query['having']) ? $this->_query['having'] : '';
}
Returns the HAVING part in the query.
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). |
public function getJoin()
{
return isset($this->_query['join']) ? $this->_query['join'] : '';
}
Returns the join part in the query.
public string getLimit()
| ||
{return} | string | the LIMIT part (without 'LIMIT' ) in the query. |
public function getLimit()
{
return isset($this->_query['limit']) ? $this->_query['limit'] : -1;
}
Returns the LIMIT part in the query.
public string getOffset()
| ||
{return} | string | the OFFSET part (without 'OFFSET' ) in the query. |
public function getOffset()
{
return isset($this->_query['offset']) ? $this->_query['offset'] : -1;
}
Returns the OFFSET part in the query.
public string getOrder()
| ||
{return} | string | the ORDER BY part (without 'ORDER BY' ) in the query. |
public function getOrder()
{
return isset($this->_query['order']) ? $this->_query['order'] : '';
}
Returns the ORDER BY part in the query.
public PDOStatement getPdoStatement()
| ||
{return} | PDOStatement | the underlying PDOStatement for this command It could be null if the statement is not prepared yet. |
public function getPdoStatement()
{
return $this->_statement;
}
public string getSelect()
| ||
{return} | string | the SELECT part (without 'SELECT') in the query. |
public function getSelect()
{
return isset($this->_query['select']) ? $this->_query['select'] : '';
}
Returns the SELECT part in the query.
public string getText()
| ||
{return} | string | the SQL statement to be executed |
public function getText()
{
if($this->_text=='' && !empty($this->_query))
$this->setText($this->buildQuery($this->_query));
return $this->_text;
}
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. |
public function getUnion()
{
return isset($this->_query['union']) ? $this->_query['union'] : '';
}
Returns the UNION part in the query.
public string getWhere()
| ||
{return} | string | the WHERE part (without 'WHERE' ) in the query. |
public function getWhere()
{
return isset($this->_query['where']) ? $this->_query['where'] : '';
}
Returns the WHERE part in the query.
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 |
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.
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 |
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.
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. |
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.
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 |
public function join($table, $conditions, $params=array())
{
return $this->joinInternal('join', $table, $conditions, $params);
}
Appends an INNER JOIN part to the query.
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 |
public function leftJoin($table, $conditions, $params=array())
{
return $this->joinInternal('left join', $table, $conditions, $params);
}
Appends a LEFT OUTER JOIN part to the query.
public static limit(integer $limit, integer $offset=NULL)
| ||
$limit | integer | the limit |
$offset | integer | the offset |
{return} | static | the command object itself |
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.
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 |
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.
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 |
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.
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 |
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.
public static offset(integer $offset)
| ||
$offset | integer | the offset |
{return} | static | the command object itself |
public function offset($offset)
{
$this->_query['offset']=(int)$offset;
return $this;
}
Sets the OFFSET part of the query.
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. |
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.
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 |
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.
public void prepare()
|
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.
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 |
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.
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. |
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.
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. |
public function queryColumn($params=array())
{
return $this->queryInternal('fetchAll',array(PDO::FETCH_COLUMN, 0),$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.
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. |
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.
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. |
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).
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. |
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.
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. |
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.
public static reset()
| ||
{return} | static | this command instance |
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.
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 |
public function rightJoin($table, $conditions, $params=array())
{
return $this->joinInternal('right join', $table, $conditions, $params);
}
Appends a RIGHT OUTER JOIN part to the query.
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 |
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.
public CDbCommand selectDistinct(mixed $columns='*')
| ||
$columns | mixed | the columns to be selected. See select for more details. |
{return} | CDbCommand | the command object itself |
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.
public void setDistinct(boolean $value)
| ||
$value | boolean | a value indicating whether SELECT DISTINCT should be used. |
public function setDistinct($value)
{
$this->_query['distinct']=$value;
}
Sets a value indicating whether SELECT DISTINCT should be used.
public static setFetchMode(mixed $mode)
| ||
$mode | mixed | fetch mode |
{return} | static |
public function setFetchMode($mode)
{
$params=func_get_args();
$this->_fetchMode = $params;
return $this;
}
Set the default fetch mode for this statement
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. |
public function setFrom($value)
{
$this->from($value);
}
Sets the FROM part in the query.
public void setGroup(mixed $value)
| ||
$value | mixed | the GROUP BY part. Please refer to group() for details on how to specify this parameter. |
public function setGroup($value)
{
$this->group($value);
}
Sets the GROUP BY part in the query.
public void setHaving(mixed $value)
| ||
$value | mixed | the HAVING part. Please refer to having() for details on how to specify this parameter. |
public function setHaving($value)
{
$this->having($value);
}
Sets the HAVING part in the query.
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') |
public function setJoin($value)
{
$this->_query['join']=$value;
}
Sets the join part in the query.
public void setLimit(integer $value)
| ||
$value | integer | the LIMIT part. Please refer to limit() for details on how to specify this parameter. |
public function setLimit($value)
{
$this->limit($value);
}
Sets the LIMIT part in the query.
public void setOffset(integer $value)
| ||
$value | integer | the OFFSET part. Please refer to offset() for details on how to specify this parameter. |
public function setOffset($value)
{
$this->offset($value);
}
Sets the OFFSET part in the query.
public void setOrder(mixed $value)
| ||
$value | mixed | the ORDER BY part. Please refer to order() for details on how to specify this parameter. |
public function setOrder($value)
{
$this->order($value);
}
Sets the ORDER BY part in the query.
public void setSelect(mixed $value)
| ||
$value | mixed | the data to be selected. Please refer to select() for details on how to specify this parameter. |
public function setSelect($value)
{
$this->select($value);
}
Sets the SELECT part in the query.
public static setText(string $value)
| ||
$value | string | the SQL statement to be executed |
{return} | static | this command instance |
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.
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. |
public function setUnion($value)
{
$this->_query['union']=$value;
}
Sets the UNION part in the query.
public void setWhere(mixed $value)
| ||
$value | mixed | the where part. Please refer to where() for details on how to specify this parameter. |
public function setWhere($value)
{
$this->where($value);
}
Sets the WHERE part in the query.
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. |
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.
public static union(string $sql)
| ||
$sql | string | the SQL statement to be appended using UNION |
{return} | static | the command object itself |
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.
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. |
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.
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 |
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.
Mixing text and function calls
Note that you should choose to either set the full query text, or to use the functions.
For example, you cannot do:
$command = Yii::app()->db->createCommand("SELECT * FROM xyz"); $command->limit(100); // limit will not be applied because text is already set.
See: http://www.yiiframework.com/doc/api/1.1/CDbCommand#getText-detail
Details of where()
The API links get you in a redirect loop and appearantly it can't be fixed.
: http://www.yiiframework.com/doc/api/1.1/CDbCommand#where()-detail
Signup or Login in order to comment.