Class yii\db\pgsql\QueryBuilder
| 继承 | yii\db\pgsql\QueryBuilder » yii\db\QueryBuilder » yii\base\BaseObject |
|---|---|
| 实现 | yii\base\Configurable |
| 可用版本自 | 2.0 |
| 源码 | https://github.com/yiichina/yii2/blob/api/framework/db/pgsql/QueryBuilder.php |
QueryBuilder 是 PostgreSQL 数据库的查询构建器。
公共属性
| 属性 | 类型 | 描述 | 被定义在 |
|---|---|---|---|
| $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\pgsql\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\QueryBuilder |
| addCommentOnTable() | Builds a SQL command for adding comment to table. | yii\db\QueryBuilder |
| addDefaultValue() | Creates a SQL command for adding a default value constraint to an existing table. | yii\db\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\pgsql\QueryBuilder |
| batchInsert() | Generates a batch INSERT SQL statement. | yii\db\pgsql\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\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\pgsql\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() | 构建用于创建新索引的 SQL 语句。 | yii\db\pgsql\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\QueryBuilder |
| dropCommentFromTable() | Builds a SQL command for adding comment to table. | yii\db\QueryBuilder |
| dropDefaultValue() | Creates a SQL command for dropping a default value constraint. | yii\db\QueryBuilder |
| dropForeignKey() | Builds a SQL statement for dropping a foreign key constraint. | yii\db\QueryBuilder |
| dropIndex() | 构建用于删除索引的 SQL 语句。 | yii\db\pgsql\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\pgsql\QueryBuilder |
| renameColumn() | Builds a SQL statement for renaming a column. | yii\db\QueryBuilder |
| renameTable() | 构建用于重命名 DB 表名的 SQL 语句。 | yii\db\pgsql\QueryBuilder |
| resetSequence() | 创建用于重建数据表主键序列的 SQL 语句。 序列将被重置, 以便插入的下一个新行的主键具有指定值或者其值为 1。 | yii\db\pgsql\QueryBuilder |
| selectExists() | Creates a SELECT EXISTS() SQL statement. | yii\db\QueryBuilder |
| setConditionClasses() | Setter for $conditionClasses property. | yii\db\QueryBuilder |
| setExpressionBuilders() | Setter for $expressionBuilders property. | yii\db\QueryBuilder |
| truncateTable() | 构建用于截断 DB 表的 SQL 语句。 显式重新启动 PGSQL 的标识,以便与默认情况下都执行此操作的其他数据库保持一致。 | yii\db\pgsql\QueryBuilder |
| update() | Creates an UPDATE SQL statement. | yii\db\pgsql\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\pgsql\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\pgsql\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\pgsql\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 |
| 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 |
常量
| 常量 | 值 | 描述 | 被定义在 |
|---|---|---|---|
| INDEX_B_TREE | 'btree' | 为 createIndex() 定义一个 B-tree 索引。 | yii\db\pgsql\QueryBuilder |
| INDEX_GIN | 'gin' | 为 createIndex() 定义一个 GIN 索引。 | yii\db\pgsql\QueryBuilder |
| INDEX_GIST | 'gist' | 为 createIndex() 定义一个 GIST 索引。 | yii\db\pgsql\QueryBuilder |
| INDEX_HASH | 'hash' | 为 createIndex() 定义一个 hash 索引。 | yii\db\pgsql\QueryBuilder |
| INDEX_UNIQUE | 'unique' | 为 createIndex() 定义一个 UNIQUE 索引。 | yii\db\pgsql\QueryBuilder |
| PARAM_PREFIX | ':qp' | The prefix for automatically generated query binding parameters. | yii\db\QueryBuilder |
属性详情
从抽象列类型(键)到物理列类型(值)的映射。
方法详情
构建用于更改列定义的 SQL 语句。
| public string alterColumn($table, $column, $type) | ||
| $table | string | 要更改其列的表名。该方法会确保正确引用表名称。 |
| $column | string | 要更改的列的名称。该方法会确保正确引用该名称。 |
| $type | string | 新列类型。调用 getColumnType() 方法将抽象列类型(如果有)转换为物理列类型。
任何未被识别为抽象类型的内容都将保留在生成的 SQL 语句中。
例如, |
| return | string | 用于更改列定义的 SQL 语句。 |
|---|---|---|
Generates a batch INSERT SQL statement.
For example,
$sql = $queryBuilder->batchInsert('user', ['name', 'age'], [
['Tom', 30],
['Jane', 20],
['Linda', 25],
]);
Note that the values in each row must match the corresponding column names.
The method will properly escape the column names, and quote the values to be inserted.
| public string batchInsert($table, $columns, $rows, &$params = []) | ||
| $table | string | The table that new rows will be inserted into. |
| $columns | array | The column names |
| $rows | array|Generator | The rows to be batch inserted into the table |
| $params | array | The binding parameters. This parameter exists since 2.0.14 |
| return | string | The batch INSERT SQL statement |
|---|---|---|
构建用于启用或禁用完整性检查的 SQL 语句。
| public string checkIntegrity($check = true, $schema = '', $table = '') | ||
| $check | boolean | 是否打开或关闭完整性检查。 |
| $schema | string | 表结构。 |
| $table | string | 表名。 |
| return | string | 用于完整性检查的 SQL 语句 |
|---|---|---|
构建用于创建新索引的 SQL 语句。
参见 http://www.postgresql.org/docs/8.2/static/sql-createindex.html.
| public string createIndex($name, $table, $columns, $unique = false) | ||
| $name | string | 索引的名称。该方法将正确引用该名称。 |
| $table | string | 将为其创建新索引的表。表名将由该方法正确引用。 |
| $columns | string|array | 应包含在索引中的列。如果有多个列, 请用逗号分隔它们或使用数组来表示他们。除非在名称中找到括号, 否则方法将正确引用每个列名称。 |
| $unique | boolean|string | 是否使其成为 UNIQUE 索引约束。您可以传递 |
| return | string | 用于创建新索引的 SQL 语句。 |
|---|---|---|
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.
| protected array defaultConditionClasses() |
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() |
构建用于删除索引的 SQL 语句。
| public string dropIndex($name, $table) | ||
| $name | string | 要删除的索引的名称。该方法将正确引用该名称。 |
| $table | string | 要删除其索引的表。该方法将正确引用该名称。 |
| return | string | 用于删除索引的 SQL 语句。 |
|---|---|---|
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\pgsql\yii\db\Query to perform INSERT INTO ... SELECT SQL statement. Passing of \yii\db\pgsql\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 |
|---|---|---|
构建用于重命名 DB 表名的 SQL 语句。
| public string renameTable($oldName, $newName) | ||
| $oldName | string | 要重命名的表。该方法将正确引用该名称。 |
| $newName | string | 新的表名。该方法将正确引用该名称。 |
| return | string | 重命名 DB 表名的 SQL 语句。 |
|---|---|---|
创建用于重建数据表主键序列的 SQL 语句。 序列将被重置, 以便插入的下一个新行的主键具有指定值或者其值为 1。
| public string resetSequence($tableName, $value = null) | ||
| $tableName | string | 用于重置主键序列的数据表的表名 |
| $value | mixed | 插入的下一新行的主键的值。如果 $value 未设置, 则新行的主键值将设置为 1。 |
| return | string | 用于重置序列的 SQL 语句。 |
|---|---|---|
| throws | yii\base\InvalidArgumentException | 如果表不存在,或者没有与表关联的序列,则抛出异常。 |
构建用于截断 DB 表的 SQL 语句。 显式重新启动 PGSQL 的标识,以便与默认情况下都执行此操作的其他数据库保持一致。
| public string truncateTable($table) | ||
| $table | string | 要被截断的表。该方法会确保正确引用该名称。 |
| return | string | 用于截断 DB 表的 SQL 语句。 |
|---|---|---|
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\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\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. |