Интерфейс yii\db\QueryInterface
Интерфейс QueryInterface определяет минимальный набор методов, которые должны быть реализованы запросом к базе данных.
Стандартная реализация этого интерфейса предоставляется классом yii\db\QueryTrait.
Он поддерживает получение одной строки или всех строк результата. Поддерживается пагинация с помощью методов limit() и offset(). Сортировка поддерживается методом orderBy(), а ограничение строк по условиям — методом where().
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| addOrderBy() | Добавляет дополнительные столбцы ORDER BY в запрос. | yii\db\QueryInterface |
| all() | Выполняет запрос и возвращает все результаты в виде массива. | yii\db\QueryInterface |
| andFilterWhere() | Добавляет дополнительное условие WHERE к существующему, игнорируя пустые параметры. | yii\db\QueryInterface |
| andWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\QueryInterface |
| count() | Возвращает количество записей. | yii\db\QueryInterface |
| emulateExecution() | Устанавливает, нужно ли эмулировать выполнение запроса, предотвращая взаимодействие с хранилищем данных. | yii\db\QueryInterface |
| exists() | Возвращает значение, указывающее, содержит ли результат запроса какие-либо данные. | yii\db\QueryInterface |
| filterWhere() | Устанавливает часть WHERE запроса, игнорируя пустые параметры. | yii\db\QueryInterface |
| indexBy() | Устанавливает свойство indexBy(). | yii\db\QueryInterface |
| limit() | Устанавливает часть LIMIT запроса. | yii\db\QueryInterface |
| offset() | Устанавливает часть OFFSET запроса. | yii\db\QueryInterface |
| one() | Выполняет запрос и возвращает одну строку результата. | yii\db\QueryInterface |
| orFilterWhere() | Добавляет дополнительное условие WHERE к существующему, игнорируя пустые параметры. | yii\db\QueryInterface |
| orWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\QueryInterface |
| orderBy() | Устанавливает часть ORDER BY запроса. | yii\db\QueryInterface |
| where() | Устанавливает часть WHERE запроса. | yii\db\QueryInterface |
Подробное описание методов
addOrderBy() public abstract method
Добавляет дополнительные столбцы ORDER BY в запрос.
См. также orderBy().
| public abstract $this addOrderBy ( $columns ) | ||
|---|---|---|
| $columns | string|array |
Столбцы (и направления) для сортировки. Столбцы можно указать в строке (например, "id ASC, name DESC") или массиве (например, |
| return | $this |
Сам объект запроса |
all() public abstract method
Выполняет запрос и возвращает все результаты в виде массива.
| public abstract array all ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для выполнения запроса. Если этот параметр не указан, будет использовано приложение компонента |
| return | array |
Результаты запроса. Если запрос ничего не вернул, будет возвращен пустой массив. |
andFilterWhere() public abstract method
Добавляет дополнительное условие WHERE к существующему, игнорируя пустые параметры.
Новое условие и существующее будут объединены оператором 'AND'.
См. также:
| public abstract $this andFilterWhere ( array $condition ) | ||
|---|---|---|
| $condition | array |
Новое условие WHERE. Обратитесь к where() для получения информации о способах указания этого параметра. |
| return | $this |
Сам объект запроса |
andWhere() public abstract method
Добавляет дополнительное условие WHERE к существующему.
Новое условие и существующее будут объединены оператором 'AND'.
См. также:
| public abstract $this andWhere ( $condition ) | ||
|---|---|---|
| $condition | string|array |
Новое условие WHERE. Обратитесь к where() для получения информации о способах указания этого параметра. |
| return | $this |
Сам объект запроса |
count() public abstract method
Возвращает количество записей.
| public abstract integer count ( $q = '*', $db = null ) | ||
|---|---|---|
| $q | string |
Выражение COUNT. По умолчанию '*'. |
| $db | yii\db\Connection |
Подключение к базе данных, используемое для выполнения запроса. Если этот параметр не указан, будет использовано приложение компонента |
| return | integer |
Количество записей. |
emulateExecution() public abstract method (available since version 2.0.11)
Устанавливает, нужно ли эмулировать выполнение запроса, предотвращая взаимодействие с хранилищем данных.
После включения этого режима методы, возвращающие результаты запроса, такие как one(), all(), exists() и т. д., будут возвращать пустые значения или false. Этот метод следует использовать в том случае, если логика программы указывает, что запрос не должен возвращать никаких результатов, например, если вы установили false в условии WHERE, как в 0=1.
| public abstract $this emulateExecution ( $value = true ) | ||
|---|---|---|
| $value | boolean |
Необходимо ли предотвратить выполнение запроса. |
| return | $this |
Сам объект запроса. |
exists() public abstract method
Возвращает значение, указывающее, содержит ли результат запроса хотя бы одну строку данных.
| public abstract boolean exists ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для выполнения запроса. Если этот параметр не указан, будет использовано приложение компонента |
| return | boolean |
Содержит ли результат запроса хотя бы одну строку данных. |
filterWhere() public abstract method
Устанавливает часть WHERE запроса, игнорируя пустые параметры.
См. также:
| public abstract $this filterWhere ( array $condition ) | ||
|---|---|---|
| $condition | array |
Условия, которые должны быть помещены в часть WHERE. Обратитесь к where() для получения информации о способах указания этого параметра. |
| return | $this |
Сам объект запроса |
indexBy() public abstract method
Устанавливает свойство indexBy().
| public abstract $this indexBy ( $column ) | ||
|---|---|---|
| $column | string|callable |
Имя столбца, по которому следует индексировать результаты запроса. Это также может быть вызываемый объект (например, анонимная функция), который возвращает значение индекса на основе предоставленных данных строки. Подпись вызываемого объекта должна быть: function ($row)
{
// return the index value corresponding to $row
}
|
| return | $this |
Сам объект запроса |
limit() public abstract method
Устанавливает часть LIMIT запроса.
| public abstract $this limit ( $limit ) | ||
|---|---|---|
| $limit | integer|null |
Предел. Используйте null или отрицательное значение для отключения ограничения. |
| return | $this |
Сам объект запроса |
offset() public abstract method
Устанавливает часть OFFSET запроса.
| public abstract $this offset ( $offset ) | ||
|---|---|---|
| $offset | integer|null |
Смещение. Используйте null или отрицательное значение для отключения смещения. |
| return | $this |
Сам объект запроса |
one() public abstract method
Выполняет запрос и возвращает одну строку результата.
| public abstract array|boolean one ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для выполнения запроса. Если этот параметр не указан, будет использовано приложение компонента |
| return | array|boolean |
Первая строка (в виде массива) результата запроса. Возвращается false, если запрос не вернул ничего. |
orFilterWhere() public abstract method
Добавляет дополнительное условие WHERE к существующему, игнорируя пустые параметры.
Новое условие и существующее будут объединены оператором 'OR'.
См. также:
| public abstract $this orFilterWhere ( array $condition ) | ||
|---|---|---|
| $condition | array |
Новое условие WHERE. Обратитесь к where(), чтобы узнать, как указать этот параметр. |
| return | $this |
Сам объект запроса |
orWhere() public abstract method
Добавляет дополнительное условие WHERE к существующему.
Новое условие и существующее будут соединены с помощью оператора 'ИЛИ'.
См. также:
| public abstract $this orWhere ( $condition ) | ||
|---|---|---|
| $condition | string|array |
Новое условие WHERE. Обратитесь к where(), чтобы узнать, как указать этот параметр. |
| return | $this |
Сам объект запроса |
orderBy() public abstract method
Устанавливает часть ORDER BY запроса.
См. также addOrderBy().
| public abstract $this orderBy ( $columns ) | ||
|---|---|---|
| $columns | string|array |
Столбцы (и направления) для сортировки. Столбцы могут быть указаны либо в строке (например, "id ASC, name DESC"), либо в массиве (например, |
| return | $this |
Сам объект запроса |
where() public abstract method
Устанавливает часть WHERE запроса.
Значение $condition, указанное как массив, может иметь один из двух следующих форматов:
- форма хеша:
['column1' => value1, 'column2' => value2, ...] - форма оператора:
[operator, operand1, operand2, ...]
Условие в формате хеша, в общем, представляет следующее SQL-выражение: column1=value1 AND column2=value2 AND .... В случае, когда значение является массивом, будет сгенерировано выражение IN. А если значение является null, в сгенерированном выражении будет использоваться IS NULL. Ниже приведены некоторые примеры:
-
['type' => 1, 'status' => 2]генерирует(type = 1) AND (status = 2). -
['id' => [1, 2, 3], 'status' => 2]генерирует(id IN (1, 2, 3)) AND (status = 2). -
['status' => null]генерируетstatus IS NULL.
Условие в формате оператора генерирует SQL-выражение в соответствии с указанным оператором, который может быть одним из следующих:
-
and: операнды должны быть объединены вместе с помощью
AND. Например,['and', 'id=1', 'id=2']сгенерируетid=1 AND id=2. Если операнд является массивом, он будет преобразован в строку по правилам, описанным здесь. Например,['and', 'type=1', ['or', 'id=1', 'id=2']]сгенерируетtype=1 AND (id=1 OR id=2). Метод не будет выполнять цитирование или экранирование. -
or: аналогично оператору
andза исключением того, что операнды конкатенируются с помощьюOR. Например,['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]]сгенерирует(type IN (7, 8, 9) OR (id IN (1, 2, 3))). -
not: это примет только один операнд и создаст его отрицание, добавив префикс
NOTк строке запроса. Например,['not', ['attribute' => null]]приведет к условиюNOT (attribute IS NULL). -
between: операнд 1 должен быть именем столбца, а операнды 2 и 3 — начальным и конечным значениями диапазона, в котором находится столбец. Например,
['between', 'id', 1, 10]сгенерируетid BETWEEN 1 AND 10. -
not between: аналогично
betweenза исключением того, чтоBETWEENзаменяется наNOT BETWEENв сгенерированном условии. -
in: операнд 1 должен быть столбцом или выражением БД, а операнд 2 — массивом, представляющим диапазон значений, в котором должен находиться столбец или выражение БД. Например,
['in', 'id', [1, 2, 3]]сгенерируетid IN (1, 2, 3). Метод правильно цитирует имя столбца и экранирует значения в диапазоне.Чтобы создать составное условие
IN, можно использовать массив для имени и значения столбца, где значения индексируются именем столбца:['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']] ].Вы также можете указать подзапрос, используемый для получения значений для условия
IN:['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])] -
not in: аналогично оператору
inза исключением того, чтоINзаменяется наNOT INв сгенерированном условии. -
like: операнд 1 должен быть столбцом или выражением БД, а операнд 2 — строкой или массивом, представляющим значения, которым должен соответствовать столбец или выражение БД. Например,
['like', 'name', 'tester']сгенерируетname LIKE '%tester%'. Когда диапазон значений задан как массив, несколько предикатовLIKEбудут сгенерированы и конкатенированы с помощьюAND. Например,['like', 'name', ['test', 'sample']]сгенерируетname LIKE '%test%' AND name LIKE '%sample%'. Метод правильно цитирует имя столбца и экранирует специальные символы в значениях. Иногда вы можете сами добавить символы процента к сопоставляемому значению, для этого можно предоставить третий операндfalse. Например,['like', 'name', '%tester', false]сгенерируетname LIKE '%tester'. -
or like: аналогично оператору
likeза исключением того, чтоORиспользуется для конкатенации предикатовLIKEпри использовании массива в операнде 2. -
not like: аналогично оператору
likeза исключением того, чтоLIKEзаменяется наNOT LIKEв сгенерированном условии. -
or not like: аналогично оператору
not likeза исключением того, чтоORиспользуется для конкатенации предикатовNOT LIKE. -
exists: операнд 1 — объект запроса, используемый для построения условия
EXISTS. Например,['exists', (new Query())->select('id')->from('users')->where(['active' => 1])]приведет к следующему SQL-выражению:EXISTS (SELECT "id" FROM "users" WHERE "active"=1). -
not exists: аналогично оператору
existsза исключением того, чтоEXISTSзаменяется наNOT EXISTSв сгенерированном условии. -
Кроме того, вы можете указать произвольные операторы следующим образом: Условие
['>=', 'id', 10]приведет к следующему SQL-выражению:id >= 10.
См. также:
| public abstract $this where ( $condition ) | ||
|---|---|---|
| $condition | string|array |
Условия, которые должны быть помещены в часть WHERE. |
| return | $this |
Сам объект запроса |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-queryinterface.html