Class yii\db\Command

Inheritanceyii\db\Command » yii\base\Component » yii\base\Object
Implementsyii\base\Configurable
Available since version2.0
Source Code https://github.com/yiisoft/yii2/blob/master/framework/db/Command.php

Command represents a SQL statement to be executed against a database.

A command object is usually created by calling yii\db\Connection::createCommand(). The SQL statement it represents can be set via the $sql property.

To execute a non-query SQL (such as INSERT, DELETE, UPDATE), call execute(). To execute a SQL statement that returns a result data set (such as SELECT), use queryAll(), queryOne(), queryColumn(), queryScalar(), or query().

For example,

$users = $connection->createCommand('SELECT * FROM user')->queryAll();

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

Command also supports building SQL statements by providing methods such as insert(), update(), etc. For example, the following code will create and execute an INSERT SQL statement:

$connection->createCommand()->insert('user', [
    'name' => 'Sam',
    'age' => 30,
])->execute();

To build SELECT SQL statements, please use yii\db\Query instead.

For more details and usage information on Command, see the guide article on Database Access Objects.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$db yii\db\Connection The DB connection that this command is associated with yii\db\Command
$fetchMode integer The default fetch mode for this command. yii\db\Command
$params array The parameters (name => value) that are bound to the current PDO statement. yii\db\Command
$pdoStatement PDOStatement The PDOStatement object that this command is associated with yii\db\Command
$queryCacheDependency yii\caching\Dependency The dependency to be associated with the cached query result for this command yii\db\Command
$queryCacheDuration integer The default number of seconds that query results can remain valid in cache. yii\db\Command
$rawSql string The raw SQL with parameter values inserted into the corresponding placeholders in $sql. yii\db\Command
$sql string The SQL statement to be executed yii\db\Command

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\Object
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
addColumn() Creates a SQL command for adding a new DB column. yii\db\Command
addCommentOnColumn() Builds a SQL command for adding comment to column yii\db\Command
addCommentOnTable() Builds a SQL command for adding comment to table yii\db\Command
addForeignKey() Creates a SQL command for adding a foreign key constraint to an existing table. yii\db\Command
addPrimaryKey() Creates a SQL command for adding a primary key constraint to an existing table. yii\db\Command
alterColumn() Creates a SQL command for changing the definition of a column. yii\db\Command
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
batchInsert() Creates a batch INSERT command. yii\db\Command
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
bindParam() Binds a parameter to the SQL statement to be executed. yii\db\Command
bindValue() Binds a value to a parameter. yii\db\Command
bindValues() Binds a list of values to the corresponding parameters. yii\db\Command
cache() Enables query cache for this command. yii\db\Command
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
cancel() Cancels the execution of the SQL statement. yii\db\Command
checkIntegrity() Builds a SQL command for enabling or disabling integrity check. yii\db\Command
className() Returns the fully qualified name of this class. yii\base\Object
createIndex() Creates a SQL command for creating a new index. yii\db\Command
createTable() Creates a SQL command for creating a new DB table. yii\db\Command
delete() Creates a DELETE command. yii\db\Command
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
dropColumn() Creates a SQL command for dropping a DB column. yii\db\Command
dropCommentFromColumn() Builds a SQL command for dropping comment from column yii\db\Command
dropCommentFromTable() Builds a SQL command for dropping comment from table yii\db\Command
dropForeignKey() Creates a SQL command for dropping a foreign key constraint. yii\db\Command
dropIndex() Creates a SQL command for dropping an index. yii\db\Command
dropPrimaryKey() Creates a SQL command for removing a primary key constraint to an existing table. yii\db\Command
dropTable() Creates a SQL command for dropping a DB table. yii\db\Command
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
execute() Executes the SQL statement. yii\db\Command
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getRawSql() Returns the raw SQL by inserting parameter values into the corresponding placeholders in $sql. yii\db\Command
getSql() Returns the SQL statement for this command. yii\db\Command
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() Initializes the object. yii\base\Object
insert() Creates an INSERT command. yii\db\Command
noCache() Disables query cache for this command. yii\db\Command
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
prepare() Prepares the SQL statement to be executed. yii\db\Command
query() Executes the SQL statement and returns query result. yii\db\Command
queryAll() Executes the SQL statement and returns ALL rows at once. yii\db\Command
queryColumn() Executes the SQL statement and returns the first column of the result. yii\db\Command
queryOne() Executes the SQL statement and returns the first row of the result. yii\db\Command
queryScalar() Executes the SQL statement and returns the value of the first column in the first row of data. yii\db\Command
renameColumn() Creates a SQL command for renaming a column. yii\db\Command
renameTable() Creates a SQL command for renaming a DB table. yii\db\Command
resetSequence() Creates a SQL command for resetting the sequence value of a table's primary key. yii\db\Command
setSql() Specifies the SQL statement to be executed. yii\db\Command
trigger() Triggers an event. yii\base\Component
truncateTable() Creates a SQL command for truncating a DB table. yii\db\Command
update() Creates an UPDATE command. yii\db\Command

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
bindPendingParams() Binds pending parameters that were registered via bindValue() and bindValues(). yii\db\Command
queryInternal() Performs the actual DB query of a SQL statement. yii\db\Command
refreshTableSchema() Refreshes table schema, which was marked by requireTableSchemaRefresh() yii\db\Command
requireTableSchemaRefresh() Marks a specified table schema to be refreshed after command execution. yii\db\Command

Property Details

$db public property

The DB connection that this command is associated with

public yii\db\Connection $db null
$fetchMode public property

The default fetch mode for this command.

See also http://www.php.net/manual/en/pdostatement.setfetchmode.php.

public integer $fetchMode = \PDO::FETCH_ASSOC
$params public property

The parameters (name => value) that are bound to the current PDO statement. This property is maintained by methods such as bindValue(). It is mainly provided for logging purpose and is used to generate $rawSql. Do not modify it directly.

public array $params = []
$pdoStatement public property

The PDOStatement object that this command is associated with

$queryCacheDependency public property

The dependency to be associated with the cached query result for this command

See also cache().

$queryCacheDuration public property

The default number of seconds that query results can remain valid in cache. Use 0 to indicate that the cached data will never expire. And use a negative number to indicate query cache should not be used.

See also cache().

$rawSql public read-only property

The raw SQL with parameter values inserted into the corresponding placeholders in $sql.

public string getRawSql ( )
$sql public property

The SQL statement to be executed

public string getSql ( )
public $this setSql ( $sql )

Method Details

addColumn() public method

Creates a SQL command for adding a new DB column.

public $this addColumn ( $table, $column, $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. yii\db\QueryBuilder::getColumnType() will be called to convert the give column type to the physical one. For example, string will be converted as varchar(255), and string not null becomes varchar(255) not null.

return $this

The command object itself

addCommentOnColumn() public method (available since version 2.0.8)

Builds a SQL command for adding comment to column

public $this addCommentOnColumn ( $table, $column, $comment )
$table string

The table whose column is to be commented. The table name will be properly quoted by the method.

$column string

The name of the column to be commented. The column name will be properly quoted by the method.

$comment string

The text of the comment to be added. The comment will be properly quoted by the method.

return $this

The command object itself

addCommentOnTable() public method (available since version 2.0.8)

Builds a SQL command for adding comment to table

public $this addCommentOnTable ( $table, $comment )
$table string

The table whose column is to be commented. The table name will be properly quoted by the method.

$comment string

The text of the comment to be added. The comment will be properly quoted by the method.

return $this

The command object itself

addForeignKey() public method

Creates a SQL command for adding a foreign key constraint to an existing table.

The method will properly quote the table and column names.

public $this addForeignKey ( $name, $table, $columns, $refTable, $refColumns, $delete null, $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.

$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.

$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 $this

The command object itself

addPrimaryKey() public method

Creates a SQL command for adding a primary key constraint to an existing table.

The method will properly quote the table and column names.

public $this addPrimaryKey ( $name, $table, $columns )
$name string

The name of the primary key constraint.

$table string

The table that the primary key constraint will be added to.

$columns string|array

Comma separated string or array of columns that the primary key will consist of.

return $this

The command object itself.

alterColumn() public method

Creates a SQL command for changing the definition of a column.

public $this alterColumn ( $table, $column, $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 column type. yii\db\QueryBuilder::getColumnType() will be called to convert the give column type to the physical one. For example, string will be converted as varchar(255), and string not null becomes varchar(255) not null.

return $this

The command object itself

batchInsert() public method

Creates a batch INSERT command.

For example,

$connection->createCommand()->batchInsert('user', ['name', 'age'], [
    ['Tom', 30],
    ['Jane', 20],
    ['Linda', 25],
])->execute();

The method will properly escape the column names, and quote the values to be inserted.

Note that the values in each row must match the corresponding column names.

Also note that the created command is not executed until execute() is called.

public $this batchInsert ( $table, $columns, $rows )
$table string

The table that new rows will be inserted into.

$columns array

The column names

$rows array

The rows to be batch inserted into the table

return $this

The command object itself

bindParam() public method

Binds a parameter to the SQL statement to be executed.

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

public $this bindParam ( $name, &$value, $dataType null, $length null, $driverOptions null )
$name string|integer

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 PHP variable to bind to the SQL statement parameter (passed by reference)

$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

return $this

The current command being executed

bindPendingParams() protected method

Binds pending parameters that were registered via bindValue() and bindValues().

Note that this method requires an active $pdoStatement.

protected void bindPendingParams ( )
bindValue() public method
public $this bindValue ( $name, $value, $dataType null )
$name string|integer

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 $this

The current command being executed

bindValues() public method

Binds a list of values to the corresponding parameters.

This is similar to bindValue() except that it binds multiple values at a time. Note that the SQL data type of each value is determined by its PHP type.

public $this bindValues ( $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, e.g. [':name' => 'John', ':age' => 25]. By default, the PDO type of each value is determined by its PHP type. You may explicitly specify the PDO type by using an array: [value, type], e.g. [':name' => 'John', ':profile' => [$profile, \PDO::PARAM_LOB]].

return $this

The current command being executed

cache() public method

Enables query cache for this command.

public $this cache ( $duration null, $dependency null )
$duration integer

The number of seconds that query result of this command can remain valid in the cache. If this is not set, the value of yii\db\Connection::$queryCacheDuration will be used instead. Use 0 to indicate that the cached data will never expire.

$dependency yii\caching\Dependency

The cache dependency associated with the cached query result.

return $this

The command object itself

cancel() public method

Cancels the execution of the SQL statement.

This method mainly sets $pdoStatement to be null.

public void cancel ( )
checkIntegrity() public method

Builds a SQL command for enabling or disabling integrity check.

public $this checkIntegrity ( $check true, $schema '', $table '' )
$check boolean

Whether to turn on or off the integrity check.

$schema string

The schema name of the tables. Defaults to empty string, meaning the current or default schema.

$table string

The table name.

return $this

The command object itself

throws yii\base\NotSupportedException

if this is not supported by the underlying DBMS

createIndex() public method

Creates a SQL command for creating a new index.

public $this createIndex ( $name, $table, $columns, $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. The column names will be properly quoted by the method.

$unique boolean

Whether to add UNIQUE constraint on the created index.

return $this

The command object itself

createTable() public method

Creates a SQL command 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 method yii\db\QueryBuilder::getColumnType() will be called to convert the abstract column types to physical ones. For example, string will be converted as varchar(255), and string not null becomes varchar(255) not null.

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

public $this createTable ( $table, $columns, $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 $this

The command object itself

delete() public method

Creates a DELETE command.

For example,

$connection->createCommand()->delete('user', 'status = 0')->execute();

The method will properly escape the table and column names.

Note that the created command is not executed until execute() is called.

public $this delete ( $table, $condition '', $params = [] )
$table string

The table where the data will be deleted from.

$condition string|array

The condition that will be put in the WHERE part. Please refer to yii\db\Query::where() on how to specify condition.

$params array

The parameters to be bound to the command

return $this

The command object itself

dropColumn() public method

Creates a SQL command for dropping a DB column.

public $this dropColumn ( $table, $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 $this

The command object itself

dropCommentFromColumn() public method (available since version 2.0.8)

Builds a SQL command for dropping comment from column

public $this dropCommentFromColumn ( $table, $column )
$table string

The table whose column is to be commented. The table name will be properly quoted by the method.

$column string

The name of the column to be commented. The column name will be properly quoted by the method.

return $this

The command object itself

dropCommentFromTable() public method (available since version 2.0.8)

Builds a SQL command for dropping comment from table

public $this dropCommentFromTable ( $table )
$table string

The table whose column is to be commented. The table name will be properly quoted by the method.

return $this

The command object itself

dropForeignKey() public method

Creates a SQL command for dropping a foreign key constraint.

public $this dropForeignKey ( $name, $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 $this

The command object itself

dropIndex() public method

Creates a SQL command for dropping an index.

public $this dropIndex ( $name, $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 $this

The command object itself

dropPrimaryKey() public method

Creates a SQL command for removing a primary key constraint to an existing table.

public $this dropPrimaryKey ( $name, $table )
$name string

The name of the primary key constraint to be removed.

$table string

The table that the primary key constraint will be removed from.

return $this

The command object itself

dropTable() public method

Creates a SQL command for dropping a DB table.

public $this dropTable ( $table )
$table string

The table to be dropped. The name will be properly quoted by the method.

return $this

The command object itself

execute() public method

Executes the SQL statement.

This method should only be used for executing non-query SQL statement, such as INSERT, DELETE, UPDATE SQLs. No result set will be returned.

public integer execute ( )
return integer

Number of rows affected by the execution.

throws yii\db\Exception

execution failed

getRawSql() public method

Returns the raw SQL by inserting parameter values into the corresponding placeholders in $sql.

Note that the return value of this method should mainly be used for logging purpose. It is likely that this method returns an invalid SQL due to improper replacement of parameter placeholders.

public string getRawSql ( )
return string

The raw SQL with parameter values inserted into the corresponding placeholders in $sql.

getSql() public method

Returns the SQL statement for this command.

public string getSql ( )
return string

The SQL statement to be executed

insert() public method

Creates an INSERT command.

For example,

$connection->createCommand()->insert('user', [
    'name' => 'Sam',
    'age' => 30,
])->execute();

The method will properly escape the column names, and bind the values to be inserted.

Note that the created command is not executed until execute() is called.

public $this insert ( $table, $columns )
$table string

The table that new rows will be inserted into.

$columns array|yii\db\Query

The column data (name => value) to be inserted into the table or instance of \yii\db\yii\db\Query to perform INSERT INTO ... SELECT SQL statement. Passing of \yii\db\yii\db\Query is available since version 2.0.11.

return $this

The command object itself

noCache() public method

Disables query cache for this command.

public $this noCache ( )
return $this

The command object itself

prepare() public method

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 void prepare ( $forRead null )
$forRead boolean

Whether this method is called for a read query. If null, it means the SQL statement should be used to determine whether it is for read or write.

throws yii\db\Exception

if there is any DB error

query() public method

Executes the SQL statement and returns query result.

This method is for executing a SQL query that returns result set, such as SELECT.

public yii\db\DataReader query ( )
return yii\db\DataReader

The reader object for fetching the query result

throws yii\db\Exception

execution failed

queryAll() public method

Executes the SQL statement and returns ALL rows at once.

public array queryAll ( $fetchMode null )
$fetchMode integer

The result fetch mode. Please refer to PHP manual for valid fetch modes. If this parameter is null, the value set in $fetchMode will be used.

return array

All rows of the query result. Each array element is an array representing a row of data. An empty array is returned if the query results in nothing.

throws yii\db\Exception

execution failed

queryColumn() public method

Executes the SQL statement and returns the first column of the result.

This method is best used when only the first column of result (i.e. the first element in each row) is needed for a query.

public array queryColumn ( )
return array

The first column of the query result. Empty array is returned if the query results in nothing.

throws yii\db\Exception

execution failed

queryInternal() protected method (available since version 2.0.1)

Performs the actual DB query of a SQL statement.

protected mixed queryInternal ( $method, $fetchMode null )
$method string

Method of PDOStatement to be called

$fetchMode integer

The result fetch mode. Please refer to PHP manual for valid fetch modes. If this parameter is null, the value set in $fetchMode will be used.

return mixed

The method execution result

throws yii\db\Exception

if the query causes any problem

queryOne() public method

Executes the SQL statement and returns the first row of the result.

This method is best used when only the first row of result is needed for a query.

public array|false queryOne ( $fetchMode null )
$fetchMode integer

The result fetch mode. Please refer to PHP manual for valid fetch modes. If this parameter is null, the value set in $fetchMode will be used.

return array|false

The first row (in terms of an array) of the query result. False is returned if the query results in nothing.

throws yii\db\Exception

execution failed

queryScalar() public method

Executes the SQL statement and returns the value of the first column in the first row of data.

This method is best used when only a single value is needed for a query.

public string|null|false queryScalar ( )
return string|null|false

The value of the first column in the first row of the query result. False is returned if there is no value.

throws yii\db\Exception

execution failed

refreshTableSchema() protected method (available since version 2.0.6)

Refreshes table schema, which was marked by requireTableSchemaRefresh()

protected void refreshTableSchema ( )
renameColumn() public method

Creates a SQL command for renaming a column.

public $this renameColumn ( $table, $oldName, $newName )
$table string

The table whose column is to be renamed. The name will be properly quoted by the method.

$oldName 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 $this

The command object itself

renameTable() public method

Creates a SQL command for renaming a DB table.

public $this renameTable ( $table, $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 $this

The command object itself

requireTableSchemaRefresh() protected method (available since version 2.0.6)

Marks a specified table schema to be refreshed after command execution.

protected $this requireTableSchemaRefresh ( $name )
$name string

Name of the table, which schema should be refreshed.

return $this

This command instance

resetSequence() public method

Creates a SQL command for resetting the sequence value of a table's primary key.

The sequence will be reset such that the primary key of the next new row inserted will have the specified value or 1.

public $this resetSequence ( $table, $value null )
$table string

The name of the table whose primary key sequence will be reset

$value mixed

The value for the primary key of the next new row inserted. If this is not set, the next new row's primary key will have a value 1.

return $this

The command object itself

throws yii\base\NotSupportedException

if this is not supported by the underlying DBMS

setSql() public method

Specifies the SQL statement to be executed.

The previous SQL execution (if any) will be cancelled, and $params will be cleared as well.

public $this setSql ( $sql )
$sql string

The SQL statement to be set.

return $this

This command instance

truncateTable() public method

Creates a SQL command for truncating a DB table.

public $this truncateTable ( $table )
$table string

The table to be truncated. The name will be properly quoted by the method.

return $this

The command object itself

update() public method

Creates an UPDATE command.

For example,

$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();

The method will properly escape the column names and bind the values to be updated.

Note that the created command is not executed until execute() is called.

public $this update ( $table, $columns, $condition '', $params = [] )
$table string

The table to be updated.

$columns array

The column data (name => value) to be updated.

$condition string|array

The condition that will be put in the WHERE part. Please refer to yii\db\Query::where() on how to specify condition.

$params array

The parameters to be bound to the command

return $this

The command object itself