Класс yii\db\mssql\QueryBuilder
| Наследование | yii\db\mssql\QueryBuilder » yii\db\QueryBuilder » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/mssql/QueryBuilder.php |
QueryBuilder — это генератор запросов для баз данных MS SQL Server (версии 2008 и выше).
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $db | yii\db\Connection | Подключение к базе данных. | yii\db\QueryBuilder |
| $separator | string | Разделитель между фрагментами SQL-запроса. | yii\db\QueryBuilder |
| $typeMap | array | Сопоставление абстрактных типов столбцов (ключи) с физическими типами столбцов (значения). | yii\db\mssql\QueryBuilder |
Защищенные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $conditionBuilders | array | Карта условий запроса к методам-строителям. | yii\db\QueryBuilder |
| $likeEscapeCharacter | string|null | Символ, используемый для экранирования специальных символов в условиях LIKE. | yii\db\QueryBuilder |
| $likeEscapingReplacements | array | Карта символов для их замены в условиях LIKE. | yii\db\mssql\QueryBuilder |
Публичные методы
| Метод | Описание | Определён в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\db\QueryBuilder |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| addColumn() | Создаёт SQL-запрос для добавления нового столбца БД. | yii\db\QueryBuilder |
| addCommentOnColumn() | Создаёт SQL-команду для добавления комментария к столбцу | yii\db\mssql\QueryBuilder |
| addCommentOnTable() | Создаёт SQL-команду для добавления комментария к таблице | yii\db\mssql\QueryBuilder |
| addForeignKey() | Создаёт SQL-запрос для добавления внешнего ключа к существующей таблице. | yii\db\QueryBuilder |
| addPrimaryKey() | Создаёт SQL-запрос для добавления первичного ключа к существующей таблице. | yii\db\QueryBuilder |
| alterColumn() | Создаёт SQL-запрос для изменения определения столбца. | yii\db\mssql\QueryBuilder |
| batchInsert() | Генерирует SQL-запрос для пакетной вставки. | yii\db\QueryBuilder |
| build() | Генерирует SQL-запрос SELECT из объекта yii\db\Query. | yii\db\QueryBuilder |
| buildAndCondition() | Соединяет две или более SQL-выражения с оператором AND или OR. | yii\db\QueryBuilder |
| buildBetweenCondition() | Создаёт SQL-выражение с оператором BETWEEN. | yii\db\QueryBuilder |
| buildColumns() | Обрабатывает столбцы и должным образом приводит их, если необходимо. | yii\db\QueryBuilder |
| buildCondition() | Парсит условие и генерирует соответствующее SQL-выражение. | yii\db\QueryBuilder |
| buildExistsCondition() | Создаёт SQL-выражение с оператором EXISTS. | yii\db\QueryBuilder |
| buildFrom() | yii\db\QueryBuilder | |
| buildGroupBy() | yii\db\QueryBuilder | |
| buildHashCondition() | Создаёт условие на основе пар имя-значение столбца. | yii\db\QueryBuilder |
| buildHaving() | yii\db\QueryBuilder | |
| buildInCondition() | Создаёт SQL-выражение с оператором IN. | yii\db\QueryBuilder |
| buildJoin() | yii\db\QueryBuilder | |
| buildLikeCondition() | Создаёт SQL-выражение с оператором LIKE. | yii\db\QueryBuilder |
| buildLimit() | yii\db\QueryBuilder | |
| buildNotCondition() | Инвертирует SQL-выражение с оператором NOT. | yii\db\QueryBuilder |
| buildOrderBy() | yii\db\QueryBuilder | |
| buildOrderByAndLimit() | Строит фрагменты ORDER BY и LIMIT/OFFSET и добавляет их к заданному SQL. | yii\db\mssql\QueryBuilder |
| buildSelect() | yii\db\QueryBuilder | |
| buildSimpleCondition() | Создаёт SQL-выражение, подобное "column" operator value. | yii\db\QueryBuilder |
| buildUnion() | yii\db\QueryBuilder | |
| buildWhere() | yii\db\QueryBuilder | |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| checkIntegrity() | Создаёт SQL-запрос для включения или отключения проверки целостности. | yii\db\mssql\QueryBuilder |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| createIndex() | Создаёт SQL-запрос для создания нового индекса. | yii\db\QueryBuilder |
| createTable() | Создаёт SQL-запрос для создания новой таблицы БД. | yii\db\QueryBuilder |
| delete() | Создаёт SQL-запрос DELETE. | yii\db\QueryBuilder |
| dropColumn() | Создаёт SQL-запрос для удаления столбца БД. | yii\db\QueryBuilder |
| dropCommentFromColumn() | Создаёт SQL-команду для добавления комментария к столбцу | yii\db\mssql\QueryBuilder |
| dropCommentFromTable() | Создаёт SQL-команду для добавления комментария к таблице | yii\db\mssql\QueryBuilder |
| dropForeignKey() | Создаёт SQL-запрос для удаления внешнего ключа. | yii\db\QueryBuilder |
| dropIndex() | Создаёт SQL-запрос для удаления индекса. | yii\db\QueryBuilder |
| dropPrimaryKey() | Создаёт SQL-запрос для удаления ограничения первичного ключа в существующей таблице. | yii\db\QueryBuilder |
| dropTable() | Создаёт SQL-запрос для удаления таблицы БД. | yii\db\QueryBuilder |
| getColumnType() | Преобразует абстрактный тип столбца в физический тип столбца. | yii\db\QueryBuilder |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определён ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
| insert() | Создаёт оператор INSERT SQL. | yii\db\mssql\QueryBuilder |
| renameColumn() | Строит оператор SQL для переименования столбца. | yii\db\mssql\QueryBuilder |
| renameTable() | Строит оператор SQL для переименования таблицы БД. | yii\db\mssql\QueryBuilder |
| resetSequence() | Создаёт оператор SQL для сброса значения последовательности первичного ключа таблицы. | yii\db\mssql\QueryBuilder |
| selectExists() | Создаёт оператор SELECT EXISTS() SQL. | yii\db\mssql\QueryBuilder |
| truncateTable() | Строит оператор SQL для обнуления таблицы БД. | yii\db\QueryBuilder |
| update() | Создаёт оператор UPDATE SQL. | yii\db\mssql\QueryBuilder |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| buildCompositeInCondition() | Строит SQL для условия IN | yii\db\mssql\QueryBuilder |
| buildSubqueryInCondition() | Строит SQL для условия IN | yii\db\mssql\QueryBuilder |
| getAllColumnNames() | Возвращает массив имён столбцов для заданного имени модели | yii\db\mssql\QueryBuilder |
| hasLimit() | Проверяет, действует ли заданный лимит. | yii\db\QueryBuilder |
| hasOffset() | Проверяет, действует ли заданный смещение. | yii\db\QueryBuilder |
| isOldMssql() | yii\db\mssql\QueryBuilder | |
| newBuildOrderByAndLimit() | Строит предложения ORDER BY/LIMIT/OFFSET для SQL SERVER 2012 или более новых версий. | yii\db\mssql\QueryBuilder |
| oldBuildOrderByAndLimit() | Строит предложения ORDER BY/LIMIT/OFFSET для SQL SERVER 2005-2008. | yii\db\mssql\QueryBuilder |
| prepareInsertSelectSubQuery() | Подготовка select-подзапроса и имён полей для INSERT INTO. | yii\db\QueryBuilder |
Константы
| Константа | Значение | Описание | Определено в |
|---|---|---|---|
| PARAM_PREFIX | ':qp' | Префикс для автоматически сгенерированных параметров связывания запросов. | yii\db\QueryBuilder |
Подробное описание свойств
$likeEscapingReplacements защищённое свойство
Отображение символов и их замен в условиях LIKE. По умолчанию оно настроено на экранирование %, _ и \ с \.
protected array $likeEscapingReplacements = ['%' => '[%]', '_' => '[_]', '[' => '[[]', ']' => '[]]', '\\' => '[\\]']
$typeMap общедоступное свойство
Сопоставление абстрактных типов столбцов (ключи) с физическими типами столбцов (значения).
public array $typeMap = [\yii\db\mssql\Schema::TYPE_PK => 'int IDENTITY PRIMARY KEY', \yii\db\mssql\Schema::TYPE_UPK => 'int IDENTITY PRIMARY KEY', \yii\db\mssql\Schema::TYPE_BIGPK => 'bigint IDENTITY PRIMARY KEY', \yii\db\mssql\Schema::TYPE_UBIGPK => 'bigint IDENTITY PRIMARY KEY', \yii\db\mssql\Schema::TYPE_CHAR => 'nchar(1)', \yii\db\mssql\Schema::TYPE_STRING => 'nvarchar(255)', \yii\db\mssql\Schema::TYPE_TEXT => 'nvarchar(max)', \yii\db\mssql\Schema::TYPE_SMALLINT => 'smallint', \yii\db\mssql\Schema::TYPE_INTEGER => 'int', \yii\db\mssql\Schema::TYPE_BIGINT => 'bigint', \yii\db\mssql\Schema::TYPE_FLOAT => 'float', \yii\db\mssql\Schema::TYPE_DOUBLE => 'float', \yii\db\mssql\Schema::TYPE_DECIMAL => 'decimal(18,0)', \yii\db\mssql\Schema::TYPE_DATETIME => 'datetime', \yii\db\mssql\Schema::TYPE_TIMESTAMP => 'datetime', \yii\db\mssql\Schema::TYPE_TIME => 'time', \yii\db\mssql\Schema::TYPE_DATE => 'date', \yii\db\mssql\Schema::TYPE_BINARY => 'varbinary(max)', \yii\db\mssql\Schema::TYPE_BOOLEAN => 'bit', \yii\db\mssql\Schema::TYPE_MONEY => 'decimal(19,4)']
Подробное описание методов
addCommentOnColumn() public method (available since version 2.0.8)
Создаёт SQL-команду для добавления комментария к столбцу
| public string addCommentOnColumn ( $table, $column, $comment ) | ||
|---|---|---|
| $table | string |
Имя таблицы, к столбцу которой нужно добавить комментарий. Имя таблицы будет корректно обрамлено кавычками. |
| $column | string |
Имя столбца, к которому нужно добавить комментарий. Имя столбца будет корректно обрамлено кавычками. |
| $comment | string |
Текст комментария, который нужно добавить. Комментарий будет корректно обрамлён кавычками. |
| return | string |
SQL-запрос для добавления комментария к столбцу |
addCommentOnTable() public method (available since version 2.0.8)
Создаёт SQL-команду для добавления комментария к таблице
| public string addCommentOnTable ( $table, $comment ) | ||
|---|---|---|
| $table | string |
Имя таблицы, к которой нужно добавить комментарий. Имя таблицы будет корректно обрамлено кавычками. |
| $comment | string |
Текст комментария, который нужно добавить. Комментарий будет корректно обрамлён кавычками. |
| return | string |
SQL-запрос для добавления комментария к таблице |
alterColumn() public method
Строит SQL-запрос для изменения определения столбца.
| public string alterColumn ( $table, $column, $type ) | ||
|---|---|---|
| $table | string |
Таблица, столбец которой нужно изменить. Имя таблицы будет корректно обрамлено кавычками. |
| $column | string |
Имя столбца, который нужно изменить. Имя будет корректно обрамлено кавычками. |
| $type | string |
Новый тип столбца. Будет вызван метод getColumnType() для преобразования абстрактного типа столбца (если есть) в физический. Всё, что не распознаётся как абстрактный тип, останется в сгенерированном SQL-запросе. Например, 'string' будет преобразован в 'varchar(255)', а 'string not null' — в 'varchar(255) not null'. |
| return | string |
SQL-запрос для изменения определения столбца. |
buildCompositeInCondition() protected method
Строит SQL для условия IN
| protected string buildCompositeInCondition ( $operator, $columns, $values, &$params ) | ||
|---|---|---|
| $operator | string | |
| $columns | array | |
| $values | array | |
| $params | array | |
| return | string |
SQL |
buildOrderByAndLimit() public method
Строит фрагменты ORDER BY и LIMIT/OFFSET и добавляет их к заданному SQL-запросу.
| public string buildOrderByAndLimit ( $sql, $orderBy, $limit, $offset ) | ||
|---|---|---|
| $sql | string |
Существующий SQL-запрос (без ORDER BY/LIMIT/OFFSET) |
| $orderBy | array |
Столбцы сортировки. Смотрите \yii\db\mssql\Query::orderBy для получения более подробной информации об указании этого параметра. |
| $limit | integer |
Число элементов для ограничения. Смотрите \yii\db\mssql\Query::limit для получения более подробной информации. |
| $offset | integer |
Смещение. Смотрите \yii\db\mssql\Query::offset для получения более подробной информации. |
| return | string |
SQL-запрос, дополненный ORDER BY/LIMIT/OFFSET (если таковые имеются) |
buildSubqueryInCondition() protected method
Строит SQL для условия IN
| protected string buildSubqueryInCondition ( $operator, $columns, $values, &$params ) | ||
|---|---|---|
| $operator | string | |
| $columns | array | |
| $values | yii\db\Query | |
| $params | array | |
| return | string |
SQL |
| throws | yii\base\NotSupportedException |
если |
checkIntegrity() public method
Строит SQL-запрос для включения или выключения проверки целостности.
| public string checkIntegrity ( $check = true, $schema = '', $table = '' ) | ||
|---|---|---|
| $check | boolean |
Включить или выключить проверку целостности. |
| $schema | string |
Схема таблиц. |
| $table | string |
Имя таблицы. |
| return | string |
SQL-запрос для проверки целостности |
dropCommentFromColumn() public method (available since version 2.0.8)
Создаёт SQL-команду для удаления комментария из столбца
| public string dropCommentFromColumn ( $table, $column ) | ||
|---|---|---|
| $table | string |
Имя таблицы, из столбца которой нужно удалить комментарий. Имя таблицы будет корректно обрамлено кавычками. |
| $column | string |
Имя столбца, из которого нужно удалить комментарий. Имя столбца будет корректно обрамлено кавычками. |
| return | string |
SQL-запрос для удаления комментария из столбца |
dropCommentFromTable() public method (available since version 2.0.8)
Создаёт SQL-команду для удаления комментария из таблицы
| public string dropCommentFromTable ( $table ) | ||
|---|---|---|
| $table | string |
Имя таблицы, из которой нужно удалить комментарий. Имя таблицы будет корректно обрамлено кавычками. |
| return | string |
SQL-запрос для удаления комментария из таблицы |
getAllColumnNames() protected method
Возвращает массив имён столбцов, заданных именем модели
| protected array|null getAllColumnNames ( $modelClass = null ) | ||
|---|---|---|
| $modelClass | string |
Имя класса модели |
| return | array|null |
Массив имён столбцов |
insert() public method
Создаёт SQL-запрос INSERT.
Например,
$sql = $queryBuilder->insert('user', [
'name' => 'Sam',
'age' => 30,
], $params);
Метод корректно обработает имена таблиц и столбцов.
| public строка insert ( $table, $columns, &$params ) | ||
|---|---|---|
| $table | строка |
Таблица, в которую будут добавлены новые строки. |
| $columns | массив|yii\db\Query |
Данные столбцов (имя => значение), которые будут добавлены в таблицу, или экземпляр \yii\db\mssql\yii\db\Query для выполнения SQL-запроса INSERT INTO ... SELECT. Передача \yii\db\mssql\yii\db\Query доступна начиная с версии 2.0.11. |
| $params | массив |
Параметры привязки, которые будут сгенерированы этим методом. Они должны быть привязаны к команде БД позже. |
| return | строка |
SQL-запрос INSERT |
isOldMssql() защищённый метод
| protected булево isOldMssql ( ) | ||
|---|---|---|
| return | булево |
Указывает, является ли используемая версия MSSQL старше 2012 года. |
| throws | yii\base\InvalidConfigException | |
| throws | yii\db\Exception | |
newBuildOrderByAndLimit() защищённый метод
Создаёт предложения ORDER BY/LIMIT/OFFSET для SQL SERVER 2012 или более поздних версий.
| protected строка newBuildOrderByAndLimit ( $sql, $orderBy, $limit, $offset ) | ||
|---|---|---|
| $sql | строка |
Существующий SQL (без ORDER BY/LIMIT/OFFSET) |
| $orderBy | массив |
Столбцы сортировки. Подробнее о способах задания этого параметра см. в yii\db\Query::orderBy(). |
| $limit | целое число |
Число ограничений. Подробнее см. в yii\db\Query::limit(). |
| $offset | целое число |
Число смещения. Подробнее см. в yii\db\Query::offset(). |
| return | строка |
SQL с добавленными ORDER BY/LIMIT/OFFSET (если необходимо) |
oldBuildOrderByAndLimit() защищённый метод
Создаёт предложения ORDER BY/LIMIT/OFFSET для SQL SERVER 2005–2008.
| protected строка oldBuildOrderByAndLimit ( $sql, $orderBy, $limit, $offset ) | ||
|---|---|---|
| $sql | строка |
Существующий SQL (без ORDER BY/LIMIT/OFFSET) |
| $orderBy | массив |
Столбцы сортировки. Подробнее о способах задания этого параметра см. в yii\db\Query::orderBy(). |
| $limit | целое число |
Число ограничений. Подробнее см. в yii\db\Query::limit(). |
| $offset | целое число |
Число смещения. Подробнее см. в yii\db\Query::offset(). |
| return | строка |
SQL с добавленными ORDER BY/LIMIT/OFFSET (если необходимо) |
renameColumn() public метод
Создаёт SQL-запрос для переименования столбца.
| public строка renameColumn ( $table, $oldName, $newName ) | ||
|---|---|---|
| $table | строка |
Таблица, столбец которой нужно переименовать. Имя будет корректно обрамлено кавычками методом. |
| $oldName | строка |
Старое имя столбца. Имя будет корректно обрамлено кавычками методом. |
| $newName | строка |
Новое имя столбца. Имя будет корректно обрамлено кавычками методом. |
| return | строка |
SQL-запрос для переименования столбца БД. |
renameTable() public метод
Создаёт SQL-запрос для переименования таблицы БД.
| public строка renameTable ( $oldName, $newName ) | ||
|---|---|---|
| $oldName | строка |
Таблица, которую нужно переименовать. Имя будет корректно обрамлено кавычками методом. |
| $newName | строка |
Новое имя таблицы. Имя будет корректно обрамлено кавычками методом. |
| return | строка |
SQL-запрос для переименования таблицы БД. |
resetSequence() public метод
Создаёт SQL-запрос для сброса значения последовательности первичного ключа таблицы.
Последовательность будет сброшена таким образом, что первичный ключ следующей новой строки, вставленной, будет иметь указанное значение или 1.
| public строка resetSequence ( $tableName, $value = null ) | ||
|---|---|---|
| $tableName | строка |
Имя таблицы, последовательность первичного ключа которой нужно сбросить |
| $value | смешанный тип |
Значение первичного ключа следующей новой вставляемой строки. Если не задано, первичный ключ следующей новой строки будет иметь значение 1. |
| return | строка |
SQL-запрос для сброса последовательности |
| throws | yii\base\InvalidParamException |
если таблица не существует или с таблицей не связана последовательность. |
selectExists() public метод (доступен начиная с версии 2.0.8)
Создаёт SQL-запрос SELECT EXISTS().
| public строка selectExists ( $rawSql ) | ||
|---|---|---|
| $rawSql | строка |
Вложенный запрос в сыром виде для выбора из. |
| return | строка |
SQL-запрос SELECT EXISTS(). |
update() public метод
Создаёт SQL-запрос UPDATE.
Например,
$params = [];
$sql = $queryBuilder->update('user', ['status' => 1], 'age > 30', $params);
Метод корректно обработает имена таблиц и столбцов.
| public строка update ( $table, $columns, $condition, &$params ) | ||
|---|---|---|
| $table | строка |
Таблица, которая должна быть обновлена. |
| $columns | массив |
Данные столбцов (имя => значение), которые должны быть обновлены. |
| $condition | массив|строка |
Условие, которое будет помещено в часть WHERE. Обратитесь к \yii\db\mssql\Query::where() за дополнительной информацией о способах задания условия. |
| $params | массив |
Параметры привязки, которые будут изменены этим методом, чтобы они могли быть привязаны к команде БД позже. |
| return | строка |
SQL-запрос UPDATE |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-mssql-querybuilder.html