Class yii\db\mssql\QueryBuilder
继承 | yii\db\mssql\QueryBuilder » yii\db\QueryBuilder » yii\base\BaseObject |
---|---|
实现 | yii\base\Configurable |
可用版本自 | 2.0 |
源码 | https://github.com/yiichina/yii2/blob/api/framework/db/mssql/QueryBuilder.php |
MS SQL Server(版本要求 2008 以及 2008 以上版本)数据库查询构建器。
公共属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
$db | yii\db\Connection | The database connection. | yii\db\QueryBuilder |
$separator | string | The separator between different fragments of a SQL statement. | yii\db\QueryBuilder |
$typeMap | array | 从抽象列类型(键)到物理列类型(值)的映射。 | yii\db\mssql\QueryBuilder |
受保护的属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
$conditionBuilders | array | Map of query condition to builder methods. | yii\db\QueryBuilder |
$conditionClasses | array | Map of condition aliases to condition classes. | yii\db\QueryBuilder |
$expressionBuilders | string[]|yii\db\ExpressionBuilderInterface[] | Maps expression class to expression builder class. | yii\db\QueryBuilder |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\BaseObject |
__construct() | Constructor. | yii\db\QueryBuilder |
__get() | Returns the value of an object property. | yii\base\BaseObject |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\BaseObject |
__set() | Sets value of an object property. | yii\base\BaseObject |
__unset() | Sets an object property to null. | yii\base\BaseObject |
addCheck() | Creates a SQL command for adding a check constraint to an existing table. | yii\db\QueryBuilder |
addColumn() | Builds a SQL statement for adding a new DB column. | yii\db\QueryBuilder |
addCommentOnColumn() | Builds a SQL command for adding comment to column. | yii\db\mssql\QueryBuilder |
addCommentOnTable() | Builds a SQL command for adding comment to table. | yii\db\mssql\QueryBuilder |
addDefaultValue() | Creates a SQL command for adding a default value constraint to an existing table. | yii\db\mssql\QueryBuilder |
addForeignKey() | Builds a SQL statement for adding a foreign key constraint to an existing table. | yii\db\QueryBuilder |
addPrimaryKey() | Builds a SQL statement for adding a primary key constraint to an existing table. | yii\db\QueryBuilder |
addUnique() | Creates a SQL command for adding an unique constraint to an existing table. | yii\db\QueryBuilder |
alterColumn() | 构建用于更改列定义的 SQL 语句。 | yii\db\mssql\QueryBuilder |
batchInsert() | Generates a batch INSERT SQL statement. | yii\db\QueryBuilder |
bindParam() | Helper method to add $value to $params array using PARAM_PREFIX. | yii\db\QueryBuilder |
build() | Generates a SELECT SQL statement from a yii\db\Query object. | yii\db\QueryBuilder |
buildAndCondition() | Connects two or more SQL expressions with the AND or OR operator. |
yii\db\QueryBuilder |
buildBetweenCondition() | Creates an SQL expressions with the BETWEEN operator. |
yii\db\QueryBuilder |
buildColumns() | Processes columns and properly quotes them if necessary. | yii\db\QueryBuilder |
buildCondition() | Parses the condition specification and generates the corresponding SQL expression. | yii\db\QueryBuilder |
buildExistsCondition() | Creates an SQL expressions with the EXISTS operator. |
yii\db\QueryBuilder |
buildExpression() | Builds given $expression | yii\db\QueryBuilder |
buildFrom() | yii\db\QueryBuilder | |
buildGroupBy() | yii\db\QueryBuilder | |
buildHashCondition() | Creates a condition based on column-value pairs. | yii\db\QueryBuilder |
buildHaving() | yii\db\QueryBuilder | |
buildInCondition() | Creates an SQL expressions with the IN operator. |
yii\db\QueryBuilder |
buildJoin() | yii\db\QueryBuilder | |
buildLikeCondition() | Creates an SQL expressions with the LIKE operator. |
yii\db\QueryBuilder |
buildLimit() | yii\db\QueryBuilder | |
buildNotCondition() | Inverts an SQL expressions with NOT operator. |
yii\db\QueryBuilder |
buildOrderBy() | yii\db\QueryBuilder | |
buildOrderByAndLimit() | Builds the ORDER BY and LIMIT/OFFSET clauses and appends them to the given SQL. | yii\db\mssql\QueryBuilder |
buildSelect() | yii\db\QueryBuilder | |
buildSimpleCondition() | Creates an SQL expressions like "column" operator value . |
yii\db\QueryBuilder |
buildUnion() | yii\db\QueryBuilder | |
buildWhere() | yii\db\QueryBuilder | |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\BaseObject |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\BaseObject |
checkIntegrity() | 构建用于启用或禁用数据完整性检查的 SQL 语句。 | yii\db\mssql\QueryBuilder |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
createConditionFromArray() | Transforms $condition defined in array format (as described in yii\db\Query::where() to instance of \yii\db\yii\db\condition\ConditionInterface according to $conditionClasses map. | yii\db\QueryBuilder |
createIndex() | Builds a SQL statement for creating a new index. | yii\db\QueryBuilder |
createTable() | Builds a SQL statement for creating a new DB table. | yii\db\QueryBuilder |
createView() | Creates a SQL View. | yii\db\QueryBuilder |
delete() | Creates a DELETE SQL statement. | yii\db\QueryBuilder |
dropCheck() | Creates a SQL command for dropping a check constraint. | yii\db\QueryBuilder |
dropColumn() | Builds a SQL statement for dropping a DB column. | yii\db\QueryBuilder |
dropCommentFromColumn() | Builds a SQL command for adding comment to column. | yii\db\mssql\QueryBuilder |
dropCommentFromTable() | Builds a SQL command for adding comment to table. | yii\db\mssql\QueryBuilder |
dropDefaultValue() | Creates a SQL command for dropping a default value constraint. | yii\db\mssql\QueryBuilder |
dropForeignKey() | Builds a SQL statement for dropping a foreign key constraint. | yii\db\QueryBuilder |
dropIndex() | Builds a SQL statement for dropping an index. | yii\db\QueryBuilder |
dropPrimaryKey() | Builds a SQL statement for removing a primary key constraint to an existing table. | yii\db\QueryBuilder |
dropTable() | Builds a SQL statement for dropping a DB table. | yii\db\QueryBuilder |
dropUnique() | Creates a SQL command for dropping an unique constraint. | yii\db\QueryBuilder |
dropView() | Drops a SQL View. | yii\db\QueryBuilder |
executeResetSequence() | Execute a SQL statement for resetting the sequence value of a table's primary key. | yii\db\QueryBuilder |
getColumnType() | Converts an abstract column type into a physical column type. | yii\db\QueryBuilder |
getExpressionBuilder() | Gets object of yii\db\ExpressionBuilderInterface that is suitable for $expression. | yii\db\QueryBuilder |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\BaseObject |
hasProperty() | Returns a value indicating whether a property is defined. | yii\base\BaseObject |
init() | Initializes the object. | yii\db\QueryBuilder |
insert() | Creates an INSERT SQL statement. | yii\db\mssql\QueryBuilder |
renameColumn() | 构建对列名重命名的 SQL 语句。 | yii\db\mssql\QueryBuilder |
renameTable() | 构建用于重新命名数据库表名的 SQL 语句。 | yii\db\mssql\QueryBuilder |
resetSequence() | 创建用于重置表主键的序列值的 SQL 语句。 序列将被重置, 以便于下一个新行插入的主键具有指定的值或者为 1。 | yii\db\mssql\QueryBuilder |
selectExists() | Creates a SELECT EXISTS() SQL statement. | yii\db\mssql\QueryBuilder |
setConditionClasses() | Setter for $conditionClasses property. | yii\db\QueryBuilder |
setExpressionBuilders() | Setter for $expressionBuilders property. | yii\db\QueryBuilder |
truncateTable() | Builds a SQL statement for truncating a DB table. | yii\db\QueryBuilder |
update() | Creates an UPDATE SQL statement. | yii\db\mssql\QueryBuilder |
upsert() | Creates an SQL statement to insert rows into a database table if they do not already exist (matching unique constraints), or update them if they do. | yii\db\mssql\QueryBuilder |
受保护的方法
方法 | 描述 | 被定义在 |
---|---|---|
defaultConditionClasses() | Contains array of default condition classes. Extend this method, if you want to change default condition classes for the query builder. See $conditionClasses docs for details. | yii\db\QueryBuilder |
defaultExpressionBuilders() | Contains array of default expression builders. Extend this method and override it, if you want to change default expression builders for this query builder. See $expressionBuilders docs for details. | yii\db\mssql\QueryBuilder |
getAllColumnNames() | 返回给定模型的列名数组。 | yii\db\mssql\QueryBuilder |
hasLimit() | Checks to see if the given limit is effective. | yii\db\QueryBuilder |
hasOffset() | Checks to see if the given offset is effective. | yii\db\QueryBuilder |
isOldMssql() | yii\db\mssql\QueryBuilder | |
newBuildOrderByAndLimit() | 为 SQL SERVER 2012 或更高版本构建的 BY/LIMIT/OFFSET 子句。 | yii\db\mssql\QueryBuilder |
oldBuildOrderByAndLimit() | 为 SQL SERVER 2005 到 2008 版本构建的 BY/LIMIT/OFFSET 子句。 | yii\db\mssql\QueryBuilder |
prepareInsertSelectSubQuery() | Prepare select-subquery and field names for INSERT INTO . | yii\db\QueryBuilder |
prepareInsertValues() | Prepares a VALUES part for an INSERT SQL statement. |
yii\db\QueryBuilder |
prepareUpdateSets() | Prepares a SET parts for an UPDATE SQL statement. |
yii\db\QueryBuilder |
prepareUpsertColumns() | yii\db\QueryBuilder |
常量
常量 | 值 | 描述 | 被定义在 |
---|---|---|---|
PARAM_PREFIX | ':qp' | The prefix for automatically generated query binding parameters. | yii\db\QueryBuilder |
属性详情
从抽象列类型(键)到物理列类型(值)的映射。
方法详情
Builds a SQL command for adding comment to column.
public string 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 | string | The SQL statement for adding comment on column |
---|
Builds a SQL command for adding comment to table.
public string 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 | string | The SQL statement for adding comment on table |
---|
Creates a SQL command for adding a default value constraint to an existing table.
public string addDefaultValue($name, $table, $column, $value) | ||
$name | string | The name of the default value constraint. The name will be properly quoted by the method. |
$table | string | The table that the default value constraint will be added to. The name will be properly quoted by the method. |
$column | string | The name of the column to that the constraint will be added on. The name will be properly quoted by the method. |
$value | mixed | Default value. |
return | string | The SQL statement for adding a default value constraint to an existing table. |
---|---|---|
throws | yii\base\NotSupportedException | if this is not supported by the underlying DBMS. |
构建用于更改列定义的 SQL 语句。
public string alterColumn($table, $column, $type) | ||
$table | string | 要更改列的表名。该方法将正确引用表名。 |
$column | string | 要更改的列的名称。该方法将正确引用列名 |
$type | string | 新的列类型。将调用 getColumnType() 方法将抽象列类型(存在的话)转换为物理列类型。
任何未被识别未抽象类型的内容都将保留在生成的 SQL 语句中。例如, |
return | string | 用于更改列而定义的 SQL 语句。 |
---|
Builds the ORDER BY and LIMIT/OFFSET clauses and appends them to the given SQL.
public string buildOrderByAndLimit($sql, $orderBy, $limit, $offset) | ||
$sql | string | The existing SQL (without ORDER BY/LIMIT/OFFSET) |
$orderBy | array | The order by columns. See \yii\db\mssql\Query::orderBy for more details on how to specify this parameter. |
$limit | integer | The limit number. See \yii\db\mssql\Query::limit for more details. |
$offset | integer | The offset number. See \yii\db\mssql\Query::offset for more details. |
return | string | The SQL completed with ORDER BY/LIMIT/OFFSET (if any) |
---|
构建用于启用或禁用数据完整性检查的 SQL 语句。
public string checkIntegrity($check = true, $schema = '', $table = '') | ||
$check | boolean | 是否启用或禁用数据完整性检查。 |
$schema | string | 表架构。 |
$table | string | 表名。 |
return | string | 用于检查数据完整性的 SQL 语句 |
---|
Contains array of default expression builders. Extend this method and override it, if you want to change default expression builders for this query builder. See $expressionBuilders docs for details.
protected array defaultExpressionBuilders() |
Builds a SQL command for adding comment to column.
public string 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 | string | The SQL statement for adding comment on column |
---|
Builds a SQL command for adding comment to table.
public string dropCommentFromTable($table) | ||
$table | string | The table whose column is to be commented. The table name will be properly quoted by the method. |
return | string | The SQL statement for adding comment on column |
---|
Creates a SQL command for dropping a default value constraint.
public string dropDefaultValue($name, $table) | ||
$name | string | The name of the default value constraint to be dropped. The name will be properly quoted by the method. |
$table | string | The table whose default value constraint is to be dropped. The name will be properly quoted by the method. |
return | string | The SQL statement for dropping a default value constraint. |
---|---|---|
throws | yii\base\NotSupportedException | if this is not supported by the underlying DBMS. |
返回给定模型的列名数组。
protected array|null getAllColumnNames($modelClass = null) | ||
$modelClass | string | 模型类名 |
return | array|null | 模型列名数组 |
---|
Creates an INSERT SQL statement.
For example,
$sql = $queryBuilder->insert('user', [
'name' => 'Sam',
'age' => 30,
], $params);
The method will properly escape the table and column names.
public string insert($table, $columns, &$params) | ||
$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\mssql\yii\db\Query to perform INSERT INTO ... SELECT SQL statement. Passing of \yii\db\mssql\yii\db\Query is available since version 2.0.11. |
$params | array | The binding parameters that will be generated by this method. They should be bound to the DB command later. |
return | string | The INSERT SQL |
---|
protected boolean isOldMssql() | ||
return | boolean | 所使用的 MSSQL 版本是否早于 MSSQL 2012。 |
---|---|---|
throws | yii\base\InvalidConfigException | |
throws | yii\db\Exception |
为 SQL SERVER 2012 或更高版本构建的 BY/LIMIT/OFFSET 子句。
protected string newBuildOrderByAndLimit($sql, $orderBy, $limit, $offset) | ||
$sql | string | 现有的 SQL 语句(语句中不包含 ORDER BY/LIMIT/OFFSET) |
$orderBy | array | 按列排序。有关如何指定此参数的详细信息,参阅 yii\db\Query::orderBy()。 |
$limit | integer | 限制量。更多细节,请参阅 yii\db\Query::limit()。 |
$offset | integer | 偏移量。更多细节,请参阅 yii\db\Query::offset()。 |
return | string | 包含 ORDER BY/LIMIT/OFFSET 的 SQL 语句(假如有的话) |
---|
为 SQL SERVER 2005 到 2008 版本构建的 BY/LIMIT/OFFSET 子句。
protected string oldBuildOrderByAndLimit($sql, $orderBy, $limit, $offset) | ||
$sql | string | 现有的 SQL 语句(语句中不包含 ORDER BY/LIMIT/OFFSET) |
$orderBy | array | 按列排序。有关如何指定此参数的详细信息,参阅 yii\db\Query::orderBy()。 |
$limit | integer | 限制量。更多细节,请参阅 yii\db\Query::limit()。 |
$offset | integer | 偏移量。更多细节,请参阅 yii\db\Query::offset()。 |
return | string | 包含 ORDER BY/LIMIT/OFFSET 的 SQL 语句(假如有的话) |
---|
构建对列名重命名的 SQL 语句。
public string renameColumn($table, $oldName, $newName) | ||
$table | string | 要重命名的列所在表的名称。该方法将正确引用表名。 |
$oldName | string | 旧的列名. 该方法将正确引用列名。 |
$newName | string | 新的列名。该方法将正确引用列名。 |
return | string | 用于重命名数据库表列名的 SQL 语句。 |
---|
构建用于重新命名数据库表名的 SQL 语句。
public string renameTable($oldName, $newName) | ||
$oldName | string | 要重命名的表名。该方法将正确引用表名。 |
$newName | string | 表的新名称。该方法将正确引用表名。 |
return | string | 用于重命名数据库表名的 SQL 语句。 |
---|
创建用于重置表主键的序列值的 SQL 语句。 序列将被重置, 以便于下一个新行插入的主键具有指定的值或者为 1。
public string resetSequence($tableName, $value = null) | ||
$tableName | string | 要重建主键序列的数据库表名。 |
$value | mixed | 插入的下一个新行的主键的值。如果未设置此值, 则下一个新行的主键值将为 1。 |
return | string | 用于重置主键序列的 SQL 语句 |
---|---|---|
throws | yii\base\InvalidArgumentException | 如果该表不存在,或没有与之关联的序列,则抛出异常。 |
Creates a SELECT EXISTS() SQL statement.
public string selectExists($rawSql) | ||
$rawSql | string | The subquery in a raw form to select from. |
return | string | The SELECT EXISTS() SQL statement. |
---|
Creates an UPDATE SQL statement.
For example,
$params = [];
$sql = $queryBuilder->update('user', ['status' => 1], 'age > 30', $params);
The method will properly escape the table and column names.
public string update($table, $columns, $condition, &$params) | ||
$table | string | The table to be updated. |
$columns | array | The column data (name => value) to be updated. |
$condition | array|string | The condition that will be put in the WHERE part. Please refer to \yii\db\mssql\Query::where() on how to specify condition. |
$params | array | The binding parameters that will be modified by this method so that they can be bound to the DB command later. |
return | string | The UPDATE SQL |
---|
Creates an SQL statement to insert rows into a database table if they do not already exist (matching unique constraints), or update them if they do.
For example,
$sql = $queryBuilder->upsert('pages', [
'name' => 'Front page',
'url' => 'http://example.com/', // url is unique
'visits' => 0,
], [
'visits' => new \yii\db\Expression('visits + 1'),
], $params);
The method will properly escape the table and column names.
参见:
public string upsert($table, $insertColumns, $updateColumns, &$params) | ||
$table | string | The table that new rows will be inserted into/updated in. |
$insertColumns | array|yii\db\Query | The column data (name => value) to be inserted into the table or instance
of \yii\db\mssql\Query to perform |
$updateColumns | array|boolean | The column data (name => value) to be updated if they already exist.
If |
$params | array | The binding parameters that will be generated by this method. They should be bound to the DB command later. |
return | string | The resulting SQL. |
---|---|---|
throws | yii\base\NotSupportedException | if this is not supported by the underlying DBMS. |