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