Класс yii\db\QueryBuilder
| Наследование | yii\db\QueryBuilder » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Подклассы | yii\db\cubrid\QueryBuilder, yii\db\mssql\QueryBuilder, yii\db\mysql\QueryBuilder, yii\db\oci\QueryBuilder, yii\db\pgsql\QueryBuilder, yii\db\sqlite\QueryBuilder |
| Доступен с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/QueryBuilder.php |
QueryBuilder строит SQL-запрос SELECT на основе спецификации, заданной объектом yii\db\Query.
SQL-запросы создаются из объектов yii\db\Query с помощью метода build().
QueryBuilder также используется классом yii\db\Command для построения SQL-запросов типа INSERT, UPDATE, DELETE, CREATE TABLE.
Дополнительную информацию и примеры использования QueryBuilder можно найти в статье руководства по билдерам запросов.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $db | yii\db\Connection | Подключение к базе данных. | yii\db\QueryBuilder |
| $separator | строка | Разделитель между различными фрагментами SQL-запроса. | yii\db\QueryBuilder |
| $typeMap | массив | Типы абстрактных столбцов, сопоставленные с физическими типами столбцов. | yii\db\QueryBuilder |
Защищенные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $conditionBuilders | массив | Карта условия запроса к методам билдера. | yii\db\QueryBuilder |
| $likeEscapeCharacter | строка|null | Символ, используемый для экранирования специальных символов в условиях LIKE. | yii\db\QueryBuilder |
| $likeEscapingReplacements | массив | Карта символов к их заменителям в условиях LIKE. | yii\db\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\QueryBuilder |
| addCommentOnTable() | Создает SQL-команду для добавления комментария к таблице | yii\db\QueryBuilder |
| addForeignKey() | Создает SQL-запрос для добавления внешнего ключа к существующей таблице. | yii\db\QueryBuilder |
| addPrimaryKey() | Создает SQL-запрос для добавления первичного ключа к существующей таблице. | yii\db\QueryBuilder |
| alterColumn() | Создает SQL-запрос для изменения определения столбца. | yii\db\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\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\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\QueryBuilder |
| dropCommentFromTable() | Создаёт SQL команду для удаления комментария к таблице | yii\db\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() | Создаёт SQL-запрос INSERT. | yii\db\QueryBuilder |
| renameColumn() | Создаёт SQL-запрос для переименования столбца. | yii\db\QueryBuilder |
| renameTable() | Создаёт SQL-запрос для переименования таблицы БД. | yii\db\QueryBuilder |
| resetSequence() | Создаёт SQL-запрос для сброса последовательности значений первичного ключа таблицы. | yii\db\QueryBuilder |
| selectExists() | Создаёт SQL-запрос SELECT EXISTS(). | yii\db\QueryBuilder |
| truncateTable() | Создаёт SQL-запрос для обнуления таблицы БД. | yii\db\QueryBuilder |
| update() | Создаёт SQL-запрос UPDATE. | yii\db\QueryBuilder |
Защищённые методы
| Метод | Описание | Определён в |
|---|---|---|
| buildCompositeInCondition() | Строит SQL для условия IN | yii\db\QueryBuilder |
| buildSubqueryInCondition() | Строит SQL для условия IN | yii\db\QueryBuilder |
| hasLimit() | Проверяет, действует ли заданное ограничение. | yii\db\QueryBuilder |
| hasOffset() | Проверяет, действует ли заданный смещение. | yii\db\QueryBuilder |
| prepareInsertSelectSubQuery() | Подготавливает подзапрос select и имена полей для INSERT INTO. | yii\db\QueryBuilder |
Константы
| Константа | Значение | Описание | Определён в |
|---|---|---|---|
| PARAM_PREFIX | ':qp' | Префикс для автоматически сгенерированных параметров связывания запроса. | yii\db\QueryBuilder |
Подробности свойств
$conditionBuilders защищённое свойство
Карта условия запроса к методам-билдерам. Эти методы используются buildCondition() для построения SQL-условий из синтаксиса массивов.
protected array $conditionBuilders = ['NOT' => 'buildNotCondition', 'AND' => 'buildAndCondition', 'OR' => 'buildAndCondition', 'BETWEEN' => 'buildBetweenCondition', 'NOT BETWEEN' => 'buildBetweenCondition', 'IN' => 'buildInCondition', 'NOT IN' => 'buildInCondition', 'LIKE' => 'buildLikeCondition', 'NOT LIKE' => 'buildLikeCondition', 'OR LIKE' => 'buildLikeCondition', 'OR NOT LIKE' => 'buildLikeCondition', 'EXISTS' => 'buildExistsCondition', 'NOT EXISTS' => 'buildExistsCondition']
$db публичное свойство
Подключение к базе данных.
public yii\db\Connection $db = null
$likeEscapeCharacter защищённое свойство (доступно начиная с версии 2.0.12)
Символ, используемый для экранирования специальных символов в условиях LIKE. По умолчанию предполагается, что это \.
protected string|null $likeEscapeCharacter = null
$likeEscapingReplacements защищённое свойство (доступно начиная с версии 2.0.12)
Карта символов и их замещений в условиях LIKE. По умолчанию настроено на экранирование %, _ и \ с \.
protected array $likeEscapingReplacements = ['%' => '\%', '_' => '\_', '\\' => '\\\\']
$separator публичное свойство
Разделитель между различными фрагментами SQL-запроса. По умолчанию пустое пространство. Это используется главным образом build() при генерации SQL-запроса.
public string $separator = ' '
$typeMap публичное свойство
Абстрактные типы столбцов, сопоставленные с физическими типами столбцов. Это в основном используется для поддержки создания/модификации таблиц с помощью независимых от БД спецификаций типов данных. Подклассы должны переопределять это свойство для объявления поддерживаемых сопоставлений типов.
public array $typeMap = []
Подробности методов
__construct() public method
Конструктор.
| public void __construct ( $connection, $config = [] ) | ||
|---|---|---|
| $connection | yii\db\Connection |
Подключение к базе данных. |
| $config | array |
Параметры (имя-значение), которые будут использованы для инициализации свойств объекта. |
addColumn() public method
Создаёт SQL-запрос для добавления нового столбца в базу данных.
| public string addColumn ( $table, $column, $type ) | ||
|---|---|---|
| $table | string |
Таблица, в которую будет добавлен новый столбец. Имя таблицы будет корректно обрамлено кавычками. |
| $column | string |
Имя нового столбца. Имя будет корректно обрамлено кавычками. |
| $type | string |
Тип столбца. Метод getColumnType() будет вызван для преобразования абстрактного типа столбца (если он есть) в физический. Всё, что не распознаётся как абстрактный тип, сохранится в сгенерированном SQL. Например, 'string' преобразуется в 'varchar(255)', а 'string not null' — в 'varchar(255) not null'. |
| return | string |
SQL-запрос для добавления нового столбца. |
addCommentOnColumn() public method (доступно начиная с версии 2.0.8)
Создаёт SQL-команду для добавления комментария к столбцу.
| public string addCommentOnColumn ( $table, $column, $comment ) | ||
|---|---|---|
| $table | string |
Таблица, к столбцу которой нужно добавить комментарий. Имя таблицы будет корректно обрамлено кавычками. |
| $column | string |
Имя столбца, к которому нужно добавить комментарий. Имя столбца будет корректно обрамлено кавычками. |
| $comment | string |
Текст комментария, который нужно добавить. Комментарий будет корректно обрамлён кавычками. |
| return | string |
SQL-запрос для добавления комментария к столбцу. |
addCommentOnTable() public method (доступно начиная с версии 2.0.8)
Создаёт SQL-команду для добавления комментария к таблице.
| public string addCommentOnTable ( $table, $comment ) | ||
|---|---|---|
| $table | string |
Таблица, к которой нужно добавить комментарий. Имя таблицы будет корректно обрамлено кавычками. |
| $comment | string |
Текст комментария, который нужно добавить. Комментарий будет корректно обрамлён кавычками. |
| return | string |
SQL-запрос для добавления комментария к таблице. |
addForeignKey() public method
Создаёт SQL-запрос для добавления внешнего ключа к существующей таблице.
Метод корректно обрамит имена таблиц и столбцов кавычками.
| public string addForeignKey ( $name, $table, $columns, $refTable, $refColumns, $delete = null, $update = null ) | ||
|---|---|---|
| $name | string |
Имя внешнего ключа. |
| $table | string |
Таблица, к которой добавляется внешний ключ. |
| $columns | string|array |
Имя столбца, к которому добавляется ограничение. Если столбцов несколько, разделяйте их запятыми или используйте массив. |
| $refTable | string |
Таблица, к которой ссылается внешний ключ. |
| $refColumns | string|array |
Имя столбца, к которому ссылается внешний ключ. Если столбцов несколько, разделяйте их запятыми или используйте массив. |
| $delete | string |
Опция ON DELETE. Большинство СУБД поддерживают эти опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL |
| $update | string |
Опция ON UPDATE. Большинство СУБД поддерживают эти опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL |
| return | string |
SQL-запрос для добавления внешнего ключа к существующей таблице. |
addPrimaryKey() public method
Создаёт SQL-запрос для добавления первичного ключа к существующей таблице.
| public string addPrimaryKey ( $name, $table, $columns ) | ||
|---|---|---|
| $name | string |
Имя первичного ключа. |
| $table | string |
Таблица, к которой добавляется первичный ключ. |
| $columns | string|array |
Строка с перечислением столбцов через запятую или массив столбцов, из которых состоит первичный ключ. |
| 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-запрос для изменения определения столбца. |
batchInsert() public method
Генерирует SQL-запрос для пакетной вставки данных.
Например,
$sql = $queryBuilder->batchInsert('user', ['name', 'age'], [
['Tom', 30],
['Jane', 20],
['Linda', 25],
]);
Обратите внимание, что значения в каждой строке должны соответствовать именам соответствующих столбцов.
Метод корректно экранирует имена столбцов и приводит значения, подлежащие вставке, к кавычкам.
| public string batchInsert ( $table, $columns, $rows ) | ||
|---|---|---|
| $table | string |
Таблица, в которую будут вставлены новые строки. |
| $columns | array |
Имена столбцов. |
| $rows | array |
Строки, которые будут вставлены в таблицу. |
| return | string |
SQL-запрос для пакетной вставки. |
build() public method
Генерирует SQL-запрос SELECT из объекта yii\db\Query.
| public массив build ( $query, $params = [] ) | ||
|---|---|---|
| $query | yii\db\Query |
Объект yii\db\Query, из которого будет сгенерировано SQL-выражение. |
| $params | массив |
Параметры, которые будут привязаны к сгенерированному SQL-выражению. Эти параметры будут включены в результат вместе с дополнительными параметрами, сгенерированными во время процесса построения запроса. |
| return | массив |
Сгенерированное SQL-выражение (первый элемент массива) и соответствующие параметры, которые должны быть привязаны к SQL-выражению (второй элемент массива). Возвращаемые параметры включают те, которые были предоставлены в |
buildAndCondition() public method
Соединяет два или более SQL-выражений с оператором AND или OR.
| public строка buildAndCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | строка |
Оператор, используемый для соединения заданных операндов |
| $operands | массив |
SQL-выражения, которые необходимо соединить. |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Сгенерированное SQL-выражение |
buildBetweenCondition() public method
Создаёт SQL-выражение с оператором BETWEEN.
| public строка buildBetweenCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | строка |
Оператор для использования (например, |
| $operands | массив |
Первый операнд — имя столбца. Второй и третий операнды описывают интервал, в котором должно находиться значение столбца. |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Сгенерированное SQL-выражение |
| throws | yii\base\InvalidParamException |
если предоставлено неверное количество операндов. |
buildColumns() public method
Обрабатывает столбцы и должным образом обрамляет их кавычками, если это необходимо.
Объединяет все столбцы в строку с запятыми в качестве разделителей.
| public строка buildColumns ( $columns ) | ||
|---|---|---|
| $columns | строка|массив |
Столбцы, которые нужно обработать |
| return | строка |
Результат обработки |
buildCompositeInCondition() protected method
Строит SQL для условия IN
| protected строка buildCompositeInCondition ( $operator, $columns, $values, &$params ) | ||
|---|---|---|
| $operator | строка | |
| $columns | массив|Перебираемый | |
| $values | массив | |
| $params | массив | |
| return | строка |
SQL |
buildCondition() public method
Парсит условие и генерирует соответствующее SQL-выражение.
| public строка buildCondition ( $condition, &$params ) | ||
|---|---|---|
| $condition | строка|массив|yii\db\Expression |
Условие. См. yii\db\Query::where() для информации о том, как указать условие. |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Сгенерированное SQL-выражение |
buildExistsCondition() public method
Создаёт SQL-выражение с оператором EXISTS.
| public строка buildExistsCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | строка |
Используемый оператор (например, |
| $operands | массив |
Содержит только один элемент, который является объектом yii\db\Query, представляющим подзапрос. |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Сгенерированное SQL-выражение |
| throws | yii\base\InvalidParamException |
если операнд не является объектом yii\db\Query. |
buildFrom() public method
| public строка buildFrom ( $tables, &$params ) | ||
|---|---|---|
| $tables | массив | |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Запрос FROM, построенный из yii\db\Query::$from. |
buildGroupBy() public method
| public строка buildGroupBy ( $columns ) | ||
|---|---|---|
| $columns | массив | |
| return | строка |
Запрос GROUP BY |
buildHashCondition() public method
Создаёт условие на основе пар "имя столбца-значение".
| public строка buildHashCondition ( $condition, &$params ) | ||
|---|---|---|
| $condition | массив |
Условие. |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Сгенерированное SQL-выражение |
buildHaving() public method
| public строка buildHaving ( $condition, &$params ) | ||
|---|---|---|
| $condition | строка|массив | |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Запрос HAVING, построенный из yii\db\Query::$having. |
buildInCondition() public method
Создаёт SQL-выражение с оператором IN.
| public string buildInCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | string |
Оператор для использования (например, |
| $operands | array |
Первый операнд — имя столбца. Если это массив, будет сгенерировано составное условие IN. Второй операнд — массив значений, среди которых должно находиться значение столбца. Если это пустой массив, сгенерированное выражение будет значением |
| $params | array |
Параметры привязки для заполнения |
| return | string |
Сгенерированное SQL-выражение |
| throws | yii\db\Exception |
если было передано неверное количество операндов. |
buildJoin() public method
| public string buildJoin ( $joins, &$params ) | ||
|---|---|---|
| $joins | array | |
| $params | array |
Параметры привязки для заполнения |
| return | string |
Запрос JOIN, построенный из yii\db\Query::$join. |
| throws | yii\db\Exception |
если параметр $joins имеет неправильный формат |
buildLikeCondition() public method
Создаёт SQL-выражение с оператором LIKE
| public string buildLikeCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | string |
Используемый оператор (например, |
| $operands | array |
Массив из двух или трёх операндов
|
| $params | array |
Параметры привязки для заполнения |
| return | string |
Сгенерированное SQL-выражение |
| throws | yii\base\InvalidParamException |
если было передано неверное количество операндов. |
buildLimit() public method
| public string buildLimit ( $limit, $offset ) | ||
|---|---|---|
| $limit | integer | |
| $offset | integer | |
| return | string |
Ограничения LIMIT и OFFSET |
buildNotCondition() public method
Инвертирует SQL-выражение с оператором NOT
| public string buildNotCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | string |
Оператор для соединения заданных операндов |
| $operands | array |
SQL-выражения для соединения. |
| $params | array |
Параметры привязки для заполнения |
| return | string |
Сгенерированное SQL-выражение |
| throws | yii\base\InvalidParamException |
если было передано неверное количество операндов. |
buildOrderBy() public method
| public string buildOrderBy ( $columns ) | ||
|---|---|---|
| $columns | array | |
| return | string |
Оператор ORDER BY, построенный из yii\db\Query::$orderBy. |
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\Query::orderBy() |
| $limit | integer |
Число ограничений. Подробнее см. yii\db\Query::limit() |
| $offset | integer |
Число смещения. Подробнее см. yii\db\Query::offset() |
| return | string |
SQL с добавленными ORDER BY/LIMIT/OFFSET (если они есть) |
buildSelect() public method
| public string buildSelect ( $columns, &$params, $distinct = false, $selectOption = null ) | ||
|---|---|---|
| $columns | array | |
| $params | array |
Параметры привязки для заполнения |
| $distinct | boolean | |
| $selectOption | string | |
| return | string |
Оператор SELECT, построенный из yii\db\Query::$select. |
buildSimpleCondition() public method
Создаёт SQL-выражение типа "column" operator value
| public string buildSimpleCondition ( $operator, $operands, &$params ) | ||
|---|---|---|
| $operator | string |
Используемый оператор. Например, |
| $operands | array |
Содержит два имени столбцов. |
| $params | array |
Параметры привязки для заполнения |
| return | string |
Сгенерированное SQL-выражение |
| throws | yii\base\InvalidParamException |
если было передано неверное количество операндов. |
buildSubqueryInCondition() protected method
Строит SQL для условия IN
| protected строка buildSubqueryInCondition ( $operator, $columns, $values, &$params ) | ||
|---|---|---|
| $operator | строка | |
| $columns | массив | |
| $values | yii\db\Query | |
| $params | массив | |
| return | строка |
SQL |
buildUnion() public метод
| public строка buildUnion ( $unions, &$params ) | ||
|---|---|---|
| $unions | массив | |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Запрос UNION, построенный из yii\db\Query::$union. |
buildWhere() public метод
| public строка buildWhere ( $condition, &$params ) | ||
|---|---|---|
| $condition | строка|массив | |
| $params | массив |
Параметры привязки, которые нужно заполнить |
| return | строка |
Запрос WHERE, построенный из yii\db\Query::$where. |
checkIntegrity() public метод
Создаёт SQL-запрос для включения или выключения проверки целостности.
| public строка checkIntegrity ( $check = true, $schema = '', $table = '' ) | ||
|---|---|---|
| $check | boolean |
Включить или выключить проверку целостности. |
| $schema | строка |
Схема таблиц. По умолчанию пустая строка, что означает текущую или по умолчанию схему. |
| $table | строка |
Имя таблицы. По умолчанию пустая строка, что означает, что таблица не будет изменена. |
| return | строка |
SQL-запрос для проверки целостности |
| throws | yii\base\NotSupportedException |
если это не поддерживается используемой СУБД |
createIndex() public метод
Создаёт SQL-запрос для создания нового индекса.
| public строка createIndex ( $name, $table, $columns, $unique = false ) | ||
|---|---|---|
| $name | строка |
Имя индекса. Имя будет корректно обрамлено кавычками методом. |
| $table | строка |
Таблица, для которой будет создан новый индекс. Имя таблицы будет корректно обрамлено кавычками методом. |
| $columns | строка|массив |
Столбец(ы), которые должны быть включены в индекс. Если столбцов несколько, разделяйте их запятыми или используйте массив. Каждое имя столбца будет корректно обрамлено кавычками методом, если в названии не встречаются скобки. |
| $unique | boolean |
Добавить ограничение UNIQUE к созданному индексу. |
| return | строка |
SQL-запрос для создания нового индекса. |
createTable() public метод
Создаёт SQL-запрос для создания новой базы данных таблицы.
Столбцы новой таблицы должны быть указаны как пары имя-определение (например, 'name' => 'string'), где имя — это имя столбца, которое будет корректно обрамлено кавычками методом, а определение — это тип столбца, который может содержать абстрактный тип БД. Метод getColumnType() будет вызван для преобразования любого абстрактного типа в физический.
Если столбец указан только с определением (например, 'PRIMARY KEY (name, type)'), он будет непосредственно вставлен в сгенерированный SQL.
Например,
$sql = $queryBuilder->createTable('user', [
'id' => 'pk',
'name' => 'string',
'age' => 'integer',
]);
| public строка createTable ( $table, $columns, $options = null ) | ||
|---|---|---|
| $table | строка |
Имя таблицы, подлежащей созданию. Имя будет корректно обрамлено кавычками методом. |
| $columns | массив |
Столбцы (имя => определение) в новой таблице. |
| $options | строка |
Дополнительный фрагмент SQL, который будет добавлен к сгенерированному SQL. |
| return | строка |
SQL-запрос для создания новой таблицы БД. |
delete() public метод
Создаёт SQL-запрос DELETE.
Например,
$sql = $queryBuilder->delete('user', 'status = 0');
Метод будет корректно экранировать имена таблиц и столбцов.
| public строка delete ( $table, $condition, &$params ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой будут удалены данные. |
| $condition | массив|строка |
Условие, которое будет помещено в часть WHERE. Обратитесь к yii\db\Query::where() для указания условия. |
| $params | массив |
Параметры привязки, которые будут изменены этим методом, чтобы они могли быть привязаны к команде БД позже. |
| return | строка |
SQL-запрос DELETE |
dropColumn() public метод
Создаёт SQL-запрос для удаления столбца БД.
| public строка dropColumn ( $table, $column ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой будет удалён столбец. Имя будет корректно обрамлено кавычками методом. |
| $column | строка |
Имя столбца, который нужно удалить. Имя будет корректно обрамлено кавычками методом. |
| return | строка |
SQL-запрос для удаления столбца БД. |
dropCommentFromColumn() public метод (доступен с версии 2.0.8)
Создаёт SQL-команду для удаления комментария из столбца
| public строка dropCommentFromColumn ( $table, $column ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой нужно удалить комментарий. Имя таблицы будет корректно обрамлено кавычками методом. |
| $column | строка |
Имя столбца, из которого нужно удалить комментарий. Имя столбца будет корректно обрамлено кавычками методом. |
| return | строка |
SQL-запрос для удаления комментария из столбца |
dropCommentFromTable() public метод (доступен с версии 2.0.8)
Создаёт SQL-команду для удаления комментария из таблицы
| public строка dropCommentFromTable ( $table ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой нужно удалить комментарий. Имя таблицы будет корректно обрамлено кавычками методом. |
| return | строка |
SQL-запрос для удаления комментария из таблицы |
dropForeignKey() public метод
Создаёт SQL-запрос для удаления внешнего ключа.
| public string dropForeignKey ( $name, $table ) | ||
|---|---|---|
| $name | string |
Имя ограничения внешнего ключа, которое нужно удалить. Метод правильно обработает имя. |
| $table | string |
Таблица, из которой нужно удалить внешнее ограничение. Метод правильно обработает имя. |
| return | string |
SQL-запрос для удаления ограничения внешнего ключа. |
dropIndex() public method
Создаёт SQL-запрос для удаления индекса.
| public string dropIndex ( $name, $table ) | ||
|---|---|---|
| $name | string |
Имя индекса, который нужно удалить. Метод правильно обработает имя. |
| $table | string |
Таблица, из которой нужно удалить индекс. Метод правильно обработает имя. |
| return | string |
SQL-запрос для удаления индекса. |
dropPrimaryKey() public method
Создаёт SQL-запрос для удаления ограничения первичного ключа из существующей таблицы.
| public string dropPrimaryKey ( $name, $table ) | ||
|---|---|---|
| $name | string |
Имя ограничения первичного ключа, которое нужно удалить. |
| $table | string |
Таблица, из которой нужно удалить ограничение первичного ключа. |
| return | string |
SQL-запрос для удаления ограничения первичного ключа из существующей таблицы. |
dropTable() public method
Создаёт SQL-запрос для удаления таблицы БД.
| public string dropTable ( $table ) | ||
|---|---|---|
| $table | string |
Таблица, которую нужно удалить. Метод правильно обработает имя. |
| return | string |
SQL-запрос для удаления таблицы БД. |
getColumnType() public method
Преобразует абстрактный тип столбца в физический.
Преобразование выполняется с использованием карты типов, заданной в $typeMap. Поддерживаются следующие абстрактные типы столбцов (на примере MySQL, чтобы пояснить соответствующие физические типы):
-
pk: тип автоинкрементного первичного ключа, преобразуется в "int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY" -
bigpk: тип автоинкрементного первичного ключа, преобразуется в "bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY" -
unsignedpk: тип автоинкрементного первичного ключа без знака, преобразуется в "int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY" -
char: тип char, преобразуется в "char(1)" -
string: тип string, преобразуется в "varchar(255)" -
text: тип длинной строки, преобразуется в "text" -
smallint: тип малого целого числа, преобразуется в "smallint(6)" -
integer: тип целого числа, преобразуется в "int(11)" -
bigint: тип большого целого числа, преобразуется в "bigint(20)" -
boolean: тип булево, преобразуется в "tinyint(1)" -
float`: тип числа с плавающей точкой, преобразуется в "float" -
decimal: тип десятичного числа, преобразуется в "decimal" -
datetime: тип datetime, преобразуется в "datetime" -
timestamp: тип timestamp, преобразуется в "timestamp" -
time: тип time, преобразуется в "time" -
date: тип date, преобразуется в "date" -
money: тип денежного значения, преобразуется в "decimal(19,4)" -
binary: тип двоичных данных, преобразуется в "blob"
Если абстрактный тип содержит две или более части, разделённые пробелами (например, "string NOT NULL"), то только первая часть будет преобразована, а остальные части будут добавлены к результату преобразования. Например, 'string NOT NULL' преобразуется в 'varchar(255) NOT NULL'.
Для некоторых абстрактных типов также можно указать ограничения длины или точности, добавив их в круглые скобки непосредственно к типу. Например, string(32) преобразуется в "varchar(32)" в базе данных MySQL. Если подлежащая СУБД не поддерживает такие ограничения для типа, они будут проигнорированы.
Если тип не найден в $typeMap, он будет возвращён без изменений.
| public string getColumnType ( $type ) | ||
|---|---|---|
| $type | string|yii\db\ColumnSchemaBuilder |
Абстрактный тип столбца |
| return | string |
Физический тип столбца. |
hasLimit() protected method
Проверяет, эффективен ли заданный лимит.
| protected boolean hasLimit ( $limit ) | ||
|---|---|---|
| $limit | mixed |
Заданный лимит |
| return | boolean |
Является ли лимит эффективным |
hasOffset() protected method
Проверяет, эффективен ли заданный смещение.
| protected boolean hasOffset ( $offset ) | ||
|---|---|---|
| $offset | mixed |
Заданное смещение |
| return | boolean |
Является ли смещение эффективным |
insert() public method
Создаёт SQL-запрос INSERT.
Например,
$sql = $queryBuilder->insert('user', [
'name' => 'Sam',
'age' => 30,
], $params);
Метод правильно экранирует имена таблиц и столбцов.
| public string insert ( $table, $columns, &$params ) | ||
|---|---|---|
| $table | string |
Таблица, в которую будут добавлены новые строки. |
| $columns | array|yii\db\Query |
Данные столбцов (имя => значение) для вставки в таблицу или экземпляр \yii\db\yii\db\Query для выполнения SQL-запроса INSERT INTO ... SELECT. Передача \yii\db\yii\db\Query доступна начиная с версии 2.0.11. |
| $params | array |
Параметры связывания, которые будут сгенерированы этим методом. Они должны быть связаны с командой БД позже. |
| return | string |
SQL-запрос INSERT |
prepareInsertSelectSubQuery() protected method (available since version 2.0.11)
Подготавливает запрос select-подзапрос и имена полей для INSERT INTO .
.. SELECT SQL-запрос.
| protected array prepareInsertSelectSubQuery ( $columns, $schema, $params = [] ) | ||
|---|---|---|
| $columns | yii\db\Query |
Объект, представляющий запрос select. |
| $schema | yii\db\Schema |
Объект схемы для обработки имён столбцов. |
| $params | array |
Параметры, которые будут связаны с сгенерированным SQL-запросом. Эти параметры будут включены в результат вместе с дополнительными параметрами, сгенерированными во время процесса построения запроса. |
| throws | yii\base\InvalidParamException |
если запрос select содержит только именованные параметры. |
renameColumn() public method
Создаёт SQL-запрос для переименования столбца.
| public string renameColumn ( $table, $oldName, $newName ) | ||
|---|---|---|
| $table | string |
Таблица, столбец которой необходимо переименовать. Название будет корректно обрамлено кавычками методом. |
| $oldName | string |
Старое имя столбца. Имя будет корректно обрамлено кавычками методом. |
| $newName | string |
Новое имя столбца. Имя будет корректно обрамлено кавычками методом. |
| return | string |
SQL-запрос для переименования столбца БД. |
renameTable() public method
Создаёт SQL-запрос для переименования таблицы БД.
| public string renameTable ( $oldName, $newName ) | ||
|---|---|---|
| $oldName | string |
Таблица, подлежащая переименованию. Название будет корректно обрамлено кавычками методом. |
| $newName | string |
Новое имя таблицы. Имя будет корректно обрамлено кавычками методом. |
| return | string |
SQL-запрос для переименования таблицы БД. |
resetSequence() public method
Создаёт SQL-запрос для сброса значения последовательности первичного ключа таблицы.
Последовательность будет сброшена таким образом, что первичный ключ следующей новой вставленной строки будет иметь указанное значение или 1.
| public string resetSequence ( $table, $value = null ) | ||
|---|---|---|
| $table | string |
Имя таблицы, последовательность первичного ключа которой будет сброшена. |
| $value | array|string |
Значение для первичного ключа следующей новой вставленной строки. Если это не задано, первичный ключ следующей новой строки будет иметь значение 1. |
| return | string |
SQL-запрос для сброса последовательности. |
| throws | yii\base\NotSupportedException |
если это не поддерживается основной СУБД |
selectExists() public method (доступно с версии 2.0.8)
Создаёт SQL-запрос SELECT EXISTS().
| public string selectExists ( $rawSql ) | ||
|---|---|---|
| $rawSql | string |
Подзапрос в сыром виде для выбора. |
| return | string |
SQL-запрос SELECT EXISTS(). |
truncateTable() public method
Создаёт SQL-запрос для удаления всех данных из таблицы БД.
| public string truncateTable ( $table ) | ||
|---|---|---|
| $table | string |
Таблица, которая будет очищена. Название будет корректно обрамлено кавычками методом. |
| return | string |
SQL-запрос для удаления всех данных из таблицы БД. |
update() public method
Создаёт SQL-запрос UPDATE.
Например,
$params = [];
$sql = $queryBuilder->update('user', ['status' => 1], 'age > 30', $params);
Метод корректно экранирует имена таблиц и столбцов.
| public string update ( $table, $columns, $condition, &$params ) | ||
|---|---|---|
| $table | string |
Таблица, которая будет обновлена. |
| $columns | array |
Данные столбцов (имя => значение) для обновления. |
| $condition | array|string |
Условие, которое будет помещено в часть WHERE. Обратитесь к yii\db\Query::where() для указания условия. |
| $params | array |
Параметры привязки, которые будут изменены этим методом, чтобы их можно было связать с командой БД позже. |
| return | string |
SQL UPDATE |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-querybuilder.html