Класс yii\db\Query
| Наследование | yii\db\Query » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable, yii\db\QueryInterface |
| Использует трейты | yii\db\QueryTrait |
| Подклассы | yii\db\ActiveQuery, yii\sphinx\ActiveQuery, yii\sphinx\Query |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/Query.php |
Query представляет оператор SQL SELECT таким образом, что он независим от СУБД.
Query предоставляет набор методов для облегчения указания различных разделов в операторе SELECT. Эти методы могут быть объединены.
Вызывая createCommand(), мы можем получить экземпляр yii\db\Command, который может быть далее использован для выполнения/исполнения запроса к базе данных.
Например,
$query = new Query;
// compose the query
$query->select('id, name')
->from('user')
->limit(10);
// build and execute the query
$rows = $query->all();
// alternatively, you can create DB command and execute it
$command = $query->createCommand();
// $command->sql returns the actual SQL
$rows = $command->queryAll();
Query внутренне использует класс yii\db\QueryBuilder для генерации оператора SQL.
Более подробное руководство по работе с Query можно найти в статье Руководство по Query Builder.
Публичные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| $behaviors | yii\base\Behavior[] | Список присоединенных к этому компоненту поведений | yii\base\Component |
| $distinct | boolean | Выбирать ли только разные строки данных. | yii\db\Query |
| $emulateExecution | boolean | Эмулировать ли фактическое выполнение запроса, возвращая пустые или ложные результаты. | yii\db\QueryTrait |
| $from | array | Таблица(ы), из которых нужно выбрать данные. | yii\db\Query |
| $groupBy | array | Как сгруппировать результаты запроса. | yii\db\Query |
| $having | string|array|yii\db\Expression | Условие, применяемое в разделе GROUP BY. | yii\db\Query |
| $indexBy | string|callable | Имя столбца, по которому должны индексироваться результаты запроса. | yii\db\QueryTrait |
| $join | array | Как присоединить к другим таблицам. | yii\db\Query |
| $limit | integer|yii\db\Expression | Максимальное количество записей, которые нужно вернуть. | yii\db\QueryTrait |
| $offset | integer|yii\db\Expression | Сдвиг с нуля, начиная с которого нужно вернуть записи. | yii\db\QueryTrait |
| $orderBy | array | Как отсортировать результаты запроса. | yii\db\QueryTrait |
| $params | array | Список значений параметров запроса, индексированных параметрами-заменителями. | yii\db\Query |
| $select | array | Столбцы, которые выбираются. | yii\db\Query |
| $selectOption | string | Дополнительный параметр, который должен быть добавлен к ключевому слову 'SELECT'. | yii\db\Query |
| $union | array | Используется для построения пункта UNION(ов) в операторе SQL. | yii\db\Query |
| $where | string|array | Условие запроса. | yii\db\QueryTrait |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в null. | yii\base\Component |
| addGroupBy() | Добавляет дополнительные столбцы группировки к существующим. | yii\db\Query |
| addOrderBy() | Добавляет дополнительные столбцы ORDER BY к запросу. | yii\db\QueryTrait |
| addParams() | Добавляет дополнительные параметры для привязки к запросу. | yii\db\Query |
| addSelect() | Добавить больше столбцов к части SELECT запроса. | yii\db\Query |
| all() | Выполняет запрос и возвращает все результаты в виде массива. | yii\db\Query |
| andFilterCompare() | Добавляет условие фильтрации для определённого столбца и позволяет пользователю выбрать оператор фильтра. | yii\db\Query |
| andFilterHaving() | Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды. | yii\db\Query |
| andFilterWhere() | Добавляет дополнительное условие WHERE к существующему, но игнорирует пустые операнды. | yii\db\QueryTrait |
| andHaving() | Добавляет дополнительное условие HAVING к существующему. | yii\db\Query |
| andWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\Query |
| attachBehavior() | Присоединяет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| average() | Возвращает среднее значение указанных значений столбца. | yii\db\Query |
| batch() | Инициализирует пакетный запрос. | yii\db\Query |
| behaviors() | Возвращает список поведений, по которым должен действовать этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли считать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| column() | Выполняет запрос и возвращает первый столбец результата. | yii\db\Query |
| count() | Возвращает количество записей. | yii\db\Query |
| create() | Создаёт новый объект Query и копирует значения его свойств из существующего. | yii\db\Query |
| createCommand() | Создаёт команду DB, которую можно использовать для выполнения этого запроса. | yii\db\Query |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| distinct() | Устанавливает значение, указывающее, нужно ли использовать SELECT DISTINCT. | yii\db\Query |
| each() | Инициализирует пакетный запрос и извлекает данные строка за строкой. | yii\db\Query |
| emulateExecution() | Устанавливает, нужно ли эмулировать выполнение запроса, предотвращая любое взаимодействие с хранилищем данных. | yii\db\QueryTrait |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), прикреплены к этому компоненту. | yii\base\Component |
| exists() | Возвращает значение, указывающее, содержит ли результат запроса какие-либо данные. | yii\db\Query |
| filterHaving() | Устанавливает часть HAVING запроса, но игнорирует пустые операнды. | yii\db\Query |
| filterWhere() | Устанавливает часть WHERE запроса, но игнорирует пустые операнды. | yii\db\QueryTrait |
| from() | Устанавливает часть FROM запроса. | yii\db\Query |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все присоединённые к этому компоненту поведения. | yii\base\Component |
| groupBy() | Устанавливает часть GROUP BY запроса. | yii\db\Query |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли какой-либо обработчик, прикреплённый к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| having() | Устанавливает часть HAVING запроса. | yii\db\Query |
| indexBy() | Устанавливает свойство indexBy(). | yii\db\QueryTrait |
| init() | Инициализирует объект. | yii\base\Object |
| innerJoin() | Добавляет часть INNER JOIN к запросу. | yii\db\Query |
| join() | Добавляет часть JOIN к запросу. | yii\db\Query |
| leftJoin() | Добавляет часть LEFT OUTER JOIN к запросу. | yii\db\Query |
| limit() | Устанавливает часть LIMIT запроса. | yii\db\QueryTrait |
| max() | Возвращает максимальное значение указанных значений столбца. | yii\db\Query |
| min() | Возвращает минимальное значение указанного столбца. | yii\db\Query |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| offset() | Устанавливает часть OFFSET запроса. | yii\db\QueryTrait |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| one() | Выполняет запрос и возвращает одну строку результата. | yii\db\Query |
| orFilterHaving() | Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды. | yii\db\Query |
| orFilterWhere() | Добавляет дополнительное условие WHERE к существующему, но игнорирует пустые операнды. | yii\db\QueryTrait |
| orHaving() | Добавляет дополнительное условие HAVING к существующему. | yii\db\Query |
| orWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\Query |
| orderBy() | Устанавливает часть ORDER BY запроса. | yii\db\QueryTrait |
| params() | Устанавливает параметры, которые нужно привязать к запросу. | yii\db\Query |
| populate() | Преобразует результаты необработанного запроса в формат, заданный этим запросом. | yii\db\Query |
| prepare() | Подготовка к построению SQL. | yii\db\Query |
| rightJoin() | Добавляет часть RIGHT OUTER JOIN к запросу. | yii\db\Query |
| scalar() | Возвращает результат запроса как скалярное значение. | yii\db\Query |
| select() | Устанавливает часть SELECT запроса. | yii\db\Query |
| sum() | Возвращает сумму значений указанного столбца. | yii\db\Query |
| trigger() | Вызывает событие. | yii\base\Component |
| union() | Добавляет SQL-запрос с использованием оператора UNION. | yii\db\Query |
| where() | Устанавливает часть WHERE запроса. | yii\db\Query |
Защищенные методы
| Метод | Описание | Определено |
|---|---|---|
| filterCondition() | Удаляет пустые операнды из заданного условия запроса. | yii\db\QueryTrait |
| isEmpty() | Возвращает значение, указывающее, является ли данное значение "пустым". | yii\db\QueryTrait |
| normalizeOrderBy() | Нормализует формат данных ORDER BY | yii\db\QueryTrait |
| queryScalar() | Выполняет запрос скалярного значения, сначала установив select(). | yii\db\Query |
Подробное описание свойств
$distinct общедоступное свойство
Выбирать только уникальные строки данных. Если это значение установлено в true, в предложение SELECT будет добавлено DISTINCT.
public boolean $distinct = null
$from общедоступное свойство
Таблица(ы), из которых выбираются данные. Например, ['user', 'post']. Это используется для построения предложения FROM в SQL-запросе.
См. также from().
public array $from = null
$groupBy общедоступное свойство
Как сгруппировать результаты запроса. Например, ['company', 'department']. Это используется для построения предложения GROUP BY в SQL-запросе.
public array $groupBy = null
$having общедоступное свойство
Условие, применяемое в предложении GROUP BY. Может быть строкой или массивом. Обратитесь к where(), чтобы узнать, как указать условие.
public string|array|yii\db\Expression $having = null
$join общедоступное свойство
Как объединить с другими таблицами. Каждый элемент массива представляет собой указание одного соединения, имеющего следующую структуру:
[$joinType, $tableName, $joinCondition]
Например,
[
['INNER JOIN', 'user', 'user.id = author_id'],
['LEFT JOIN', 'team', 'team.id = team_id'],
]
public array $join = null
$params общедоступное свойство
Список значений параметров запроса, индексированных маркерами параметров. Например, [':name' => 'Dan', ':age' => 31].
public array $params = []
$select общедоступное свойство
Выбираемые столбцы. Например, ['id', 'name']. Это используется для построения предложения SELECT в SQL-запросе. Если не установлено, означает выбор всех столбцов.
См. также select().
public array $select = null
$selectOption общедоступное свойство
Дополнительный параметр, который должен быть добавлен к ключевому слову 'SELECT'. Например, в MySQL параметр 'SQL_CALC_FOUND_ROWS' может быть использован.
public string $selectOption = null
$union общедоступное свойство
Используется для построения предложения UNION(ов) в SQL-запросе. Каждый элемент массива — массив следующей структуры:
-
query: либо строка, либо объект yii\db\Query, представляющий запрос -
all: булево значение, указывает, должен ли он бытьUNION ALLилиUNION
public array $union = null
Подробное описание методов
addGroupBy() public method
Добавляет дополнительные столбцы group-by к существующим.
См. также groupBy().
| public $this addGroupBy ( $columns ) | ||
|---|---|---|
| $columns | string|array |
Дополнительные столбцы для группировки. Столбцы могут быть указаны либо строкой (например, "id, name"), либо массивом (например, ['id', 'name']). Метод автоматически заключает имена столбцов в кавычки, если только столбец не содержит скобок (что означает, что столбец содержит выражение БД). Обратите внимание, что если ваша группировка — это выражение, содержащее запятые, вы всегда должны использовать массив для представления информации о группировке. В противном случае метод не сможет правильно определить столбцы группировки. Начиная с версии 2.0.7, можно передать объект yii\db\Expression для явного указания части GROUP BY на простом SQL. |
| return | $this |
Сам объект запроса |
addParams() public method
Добавляет дополнительные параметры для привязки к запросу.
См. также params().
| public $this addParams ( $params ) | ||
|---|---|---|
| $params | array |
Список значений параметров запроса, индексированных по заполнителям параметров. Например, |
| return | $this |
Сам объект запроса |
addSelect() public method
Добавить больше столбцов в часть SELECT запроса.
Обратите внимание, что если select() не был указан ранее, вы должны явно включить * , если вы хотите выбрать все оставшиеся столбцы тоже:
$query->addSelect(["*", "CONCAT(first_name, ' ', last_name) AS full_name"])->one();
См. также select().
| public $this addSelect ( $columns ) | ||
|---|---|---|
| $columns | string|array|yii\db\Expression |
Столбцы для добавления в выборку. См. select() для получения дополнительной информации о формате этого параметра. |
| return | $this |
Сам объект запроса |
all() public method
Выполняет запрос и возвращает все результаты в виде массива.
| public array all ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не указан, будет использоваться компонент приложения |
| return | array |
Результаты запроса. Если запрос не вернул ничего, будет возвращен пустой массив. |
andFilterCompare() public method (available since version 2.0.8)
Добавляет условие фильтрации для определенного столбца и позволяет пользователю выбрать оператор фильтрации.
Добавляет дополнительное условие WHERE для данного поля и определяет оператор сравнения на основе первых нескольких символов данного значения. Условие добавляется так же, как и в andFilterWhere(), поэтому пустые значения игнорируются. Новое условие и существующее будут объединены с помощью оператора AND.
Оператор сравнения определяется интеллектуально на основе первых нескольких символов в данном значении. В частности, он распознает следующие операторы, если они появляются в качестве ведущих символов в данном значении:
-
<: столбец должен быть меньше заданного значения. -
>: столбец должен быть больше заданного значения. -
<=: столбец должен быть меньше или равен заданному значению. -
>=: столбец должен быть больше или равен заданному значению. -
<>: столбец не должен быть равен заданному значению. -
=: столбец должен быть равен заданному значению. - Если ни один из вышеперечисленных операторов не обнаружен, будет использован
$defaultOperator.
| public $this andFilterCompare ( $name, $value, $defaultOperator = '=' ) | ||
|---|---|---|
| $name | string |
Имя столбца. |
| $value | string |
Значение столбца, необязательно с префиксом оператора сравнения. |
| $defaultOperator | string |
Оператор для использования, когда оператор не указан в |
| return | $this |
Сам объект запроса |
andFilterHaving() public method (available since version 2.0.11)
Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды.
Новое условие и существующее будут объединены с помощью оператора AND.
Этот метод аналогичен методу andHaving(). Основное различие заключается в том, что этот метод удалит пустые операнды запроса. В результате этот метод лучше всего подходит для построения условий запроса на основе значений фильтров, введенных пользователями.
См. также:
| public $this andFilterHaving ( array $condition ) | ||
|---|---|---|
| $condition | array |
Новое условие HAVING. Обратитесь к having() о том, как указать этот параметр. |
| return | $this |
Сам объект запроса |
andHaving() public method
Добавляет дополнительное условие HAVING к существующему.
Новое условие и существующее будут объединены с помощью оператора AND.
См. также:
| public $this andHaving ( $condition, $params = [] ) | ||
|---|---|---|
| $condition | string|array|yii\db\Expression |
Новое условие HAVING. Обратитесь к where() о том, как указать этот параметр. |
| $params | array |
Параметры (имя => значение) для привязки к запросу. |
| return | $this |
Сам объект запроса |
andWhere() public method
Добавляет дополнительное условие WHERE к существующему.
Новое условие и существующее будут объединены с помощью оператора AND.
См. также:
| public $this andWhere ( $condition, $params = [] ) | ||
|---|---|---|
| $condition | string|array|yii\db\Expression |
Новое условие WHERE. Обратитесь к where() о том, как указать этот параметр. |
| $params | array |
Параметры (имя => значение) для привязки к запросу. |
| return | $this |
Сам объект запроса |
average() public method
Возвращает среднее значение указанных значений столбца.
| public mixed average ( $q, $db = null ) | ||
|---|---|---|
| $q | string |
Имя столбца или выражение. Убедитесь, что вы правильно заключили имена столбцов в выражении в кавычки. |
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не указан, будет использоваться компонент приложения |
| return | mixed |
Среднее значение указанных значений столбца. |
batch() public method
Начинает пакетный запрос.
Запрос пакетного типа поддерживает извлечение данных по частям, что позволяет поддерживать ограничение использования памяти. Данный метод вернёт объект yii\db\BatchQueryResult, который реализует интерфейс Iterator и может использоваться для получения данных по частям.
Например,
$query = (new Query)->from('user');
foreach ($query->batch() as $rows) {
// $rows is an array of 100 or fewer rows from user table
}
| public yii\db\BatchQueryResult batch ( $batchSize = 100, $db = null ) | ||
|---|---|---|
| $batchSize | integer |
Количество записей, которые должны быть извлечены в каждой партии. |
| $db | yii\db\Connection |
Подключение к базе данных. Если не задано, будет использоваться компонент приложения "db". |
| return | yii\db\BatchQueryResult |
Результат пакетного запроса. Он реализует интерфейс Iterator и может использоваться для получения данных по частям. |
column() public method
Выполняет запрос и возвращает первый столбец результата.
| public array column ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использоваться компонент приложения |
| return | array |
Первый столбец результата запроса. Если запрос ничего не возвращает, возвращается пустой массив. |
count() public method
Возвращает количество записей.
| public integer|string count ( $q = '*', $db = null ) | ||
|---|---|---|
| $q | string |
Выражение COUNT. По умолчанию равно '*'. Убедитесь, что вы правильно приводите имена столбцов в выражении. |
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан (или равен null), будет использован компонент приложения |
| return | integer|string |
Количество записей. Результат может быть строкой в зависимости от используемой СУБД и для поддержки целочисленных значений, превышающих пределы 32-битного целого числа PHP. |
create() public static method
Создаёт новый объект Query и копирует значения свойств из существующего.
Копируются свойства, используемые билдерами запросов.
| public static yii\db\Query create ( $from ) | ||
|---|---|---|
| $from | yii\db\Query |
Исходный объект запроса |
| return | yii\db\Query |
Новый объект Query |
createCommand() public method
Создаёт команду DB, которую можно использовать для выполнения этого запроса.
| public yii\db\Command createCommand ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использован компонент приложения |
| return | yii\db\Command |
Созданный экземпляр команды DB. |
distinct() public method
Устанавливает значение, указывающее, нужно ли использовать SELECT DISTINCT.
| public $this distinct ( $value = true ) | ||
|---|---|---|
| $value | boolean |
Нужно ли использовать SELECT DISTINCT? |
| return | $this |
Сам объект запроса |
each() public method
Запускает пакетный запрос и извлекает данные строка за строкой.
Этот метод похож на batch(), за исключением того, что в каждом итерации результата возвращается только одна строка данных. Например,
$query = (new Query)->from('user');
foreach ($query->each() as $row) {
}
| public yii\db\BatchQueryResult each ( $batchSize = 100, $db = null ) | ||
|---|---|---|
| $batchSize | integer |
Количество записей, которые должны быть извлечены в каждой партии. |
| $db | yii\db\Connection |
Подключение к базе данных. Если не задано, будет использоваться компонент приложения "db". |
| return | yii\db\BatchQueryResult |
Результат пакетного запроса. Он реализует интерфейс Iterator и может использоваться для получения данных по частям. |
exists() public method
Возвращает значение, указывающее, содержит ли результат запроса какие-либо строки данных.
| public boolean exists ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использован компонент приложения |
| return | boolean |
Содержит ли результат запроса какие-либо строки данных. |
filterHaving() public method (доступно с версии 2.0.11)
Устанавливает часть HAVING запроса, но игнорирует пустые операнды.
Этот метод похож на having(). Основное отличие заключается в том, что этот метод удаляет пустые операнды запроса. В результате, этот метод лучше всего подходит для построения условий запроса на основе пользовательских фильтров.
Следующий код демонстрирует разницу между этим методом и having():
// HAVING `age`=:age $query->filterHaving(['name' => null, 'age' => 20]); // HAVING `age`=:age $query->having(['age' => 20]); // HAVING `name` IS NULL AND `age`=:age $query->having(['name' => null, 'age' => 20]);
Обратите внимание, что в отличие от having(), вы не можете передавать параметры привязки к этому методу.
См. также:
| public $this filterHaving ( array $condition ) | ||
|---|---|---|
| $condition | array |
Условия, которые должны быть помещены в часть HAVING. См. having() о том, как указать этот параметр. |
| return | $this |
Сам объект запроса |
from() public method
Устанавливает часть FROM запроса.
| public $this from ( $tables ) | ||
|---|---|---|
| $tables | string|array |
Таблица(ы) для выборки. Это может быть строка (например, Когда таблицы заданы как массив, ключи массива также могут использоваться в качестве псевдонимов таблиц (если таблица не нуждается в псевдониме, не используйте строковый ключ). Используйте объект Query для представления подзапроса. В этом случае ключ соответствующего массива будет использоваться в качестве псевдонима для подзапроса. Вот несколько примеров: // SELECT * FROM `user` `u`, `profile`;
$query = (new \yii\db\Query)->from(['u' => 'user', 'profile']);
// SELECT * FROM (SELECT * FROM `user` WHERE `active` = 1) `activeusers`;
$subquery = (new \yii\db\Query)->from('user')->where(['active' => true])
$query = (new \yii\db\Query)->from(['activeusers' => $subquery]);
// subquery can also be a string with plain SQL wrapped in parenthesis
// SELECT * FROM (SELECT * FROM `user` WHERE `active` = 1) `activeusers`;
$subquery = "(SELECT * FROM `user` WHERE `active` = 1)";
$query = (new \yii\db\Query)->from(['activeusers' => $subquery]);
|
| return | $this |
Сам объект запроса |
groupBy() public method
Устанавливает часть GROUP BY запроса.
См. также addGroupBy().
| public $this groupBy ( $columns ) | ||
|---|---|---|
| $columns | строка|массив|yii\db\Expression |
Столбцы для группировки. Столбцы могут быть указаны в строке (например, "id, name") или массиве (например, ['id', 'name']). Метод автоматически приведёт имена столбцов к формату базы данных, если в имени столбца нет скобок (что означает, что столбец содержит выражение базы данных). Обратите внимание, что если ваша группировка — это выражение, содержащее запятые, вы всегда должны использовать массив для представления информации о группировке. В противном случае метод не сможет правильно определить столбцы группировки. Начиная с версии 2.0.7, можно передать объект yii\db\Expression, чтобы явно указать часть GROUP BY в обычном SQL. |
| return | $this |
Сам объект запроса |
having() public method
Устанавливает часть HAVING запроса.
См. также:
| public $this having ( $condition, $params = [] ) | ||
|---|---|---|
| $condition | строка|массив|yii\db\Expression |
Условие, которое должно быть помещено после HAVING. Обратитесь к where(), чтобы узнать, как указать этот параметр. |
| $params | массив |
Параметры (имя => значение), которые нужно привязать к запросу. |
| return | $this |
Сам объект запроса |
innerJoin() public method
Добавляет часть INNER JOIN в запрос.
| public $this innerJoin ( $table, $on = '', $params = [] ) | ||
|---|---|---|
| $table | строка|массив |
Таблица, к которой нужно присоединиться. Используйте строку для представления имени таблицы для присоединения. Имя таблицы может содержать префикс схемы (например, 'public.user') и/или псевдоним таблицы (например, 'user u'). Метод автоматически приведёт имя таблицы к формату базы данных, если в имени таблицы нет скобок (что означает, что таблица задана как подзапрос или выражение базы данных). Используйте массив для представления присоединения к подзапросу. Массив должен содержать только один элемент. Значение должно быть объектом yii\db\Query, представляющим подзапрос, а соответствующий ключ представляет псевдоним подзапроса. |
| $on | строка|массив |
Условие присоединения, которое должно появиться в части ON. Обратитесь к join(), чтобы узнать, как указать этот параметр. |
| $params | массив |
Параметры (имя => значение), которые нужно привязать к запросу. |
| return | $this |
Сам объект запроса |
join() public method
Добавляет часть JOIN в запрос.
Первый параметр указывает, какой тип присоединения.
| public $this join ( $type, $table, $on = '', $params = [] ) | ||
|---|---|---|
| $type | строка |
Тип присоединения, например, INNER JOIN, LEFT JOIN. |
| $table | строка|массив |
Таблица, к которой нужно присоединиться. Используйте строку для представления имени таблицы для присоединения. Имя таблицы может содержать префикс схемы (например, 'public.user') и/или псевдоним таблицы (например, 'user u'). Метод автоматически приведёт имя таблицы к формату базы данных, если в имени таблицы нет скобок (что означает, что таблица задана как подзапрос или выражение базы данных). Используйте массив для представления присоединения к подзапросу. Массив должен содержать только один элемент. Значение должно быть объектом yii\db\Query, представляющим подзапрос, а соответствующий ключ представляет псевдоним подзапроса. |
| $on | строка|массив |
Условие присоединения, которое должно появиться в части ON. Обратитесь к where(), чтобы узнать, как указать этот параметр. Обратите внимание, что формат массива в where() предназначен для сопоставления столбцов со значениями, а не столбцов со столбцами, поэтому следующее не будет работать должным образом: 'post.author_id = user.id' |
| $params | массив |
Параметры (имя => значение), которые нужно привязать к запросу. |
| return | $this |
Сам объект запроса |
leftJoin() public method
Добавляет часть LEFT OUTER JOIN в запрос.
| public $this leftJoin ( $table, $on = '', $params = [] ) | ||
|---|---|---|
| $table | строка|массив |
Таблица, к которой нужно присоединиться. Используйте строку для представления имени таблицы для присоединения. Имя таблицы может содержать префикс схемы (например, 'public.user') и/или псевдоним таблицы (например, 'user u'). Метод автоматически приведёт имя таблицы к формату базы данных, если в имени таблицы нет скобок (что означает, что таблица задана как подзапрос или выражение базы данных). Используйте массив для представления присоединения к подзапросу. Массив должен содержать только один элемент. Значение должно быть объектом yii\db\Query, представляющим подзапрос, а соответствующий ключ представляет псевдоним подзапроса. |
| $on | строка|массив |
Условие присоединения, которое должно появиться в части ON. Обратитесь к join(), чтобы узнать, как указать этот параметр. |
| $params | массив |
Параметры (имя => значение), которые нужно привязать к запросу |
| return | $this |
Сам объект запроса |
max() public method
Возвращает максимальное значение указанных значений столбца.
| public mixed max ( $q, $db = null ) | ||
|---|---|---|
| $q | строка |
Имя столбца или выражение. Убедитесь, что вы правильно цитируете имена столбцов в выражении. |
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использоваться компонент |
| return | mixed |
Максимальное значение указанных значений столбца. |
min() public method
Возвращает минимальное значение указанных значений столбца.
| public mixed min ( $q, $db = null ) | ||
|---|---|---|
| $q | строка |
Имя столбца или выражение. Убедитесь, что вы правильно цитируете имена столбцов в выражении. |
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использоваться компонент |
| return | mixed |
Минимальное значение указанных значений столбца. |
one() public method
Выполняет запрос и возвращает единственную строку результата.
| public массив|булево one ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использоваться компонент |
| return | массив|булево |
Первая строка (с точки зрения массива) результата запроса. Возвращается значение false, если запрос не возвращает ничего. |
orFilterHaving() public method (доступно начиная с версии 2.0.11)
Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды.
Новое условие и существующее будут объединены с помощью оператора OR.
Этот метод похож на orHaving(). Основное различие заключается в том, что этот метод удаляет пустые операнды запроса. В результате этот метод лучше всего подходит для построения условий запроса на основе значений фильтров, введённых пользователем.
См. также:
| public $this orFilterHaving ( array $condition ) | ||
|---|---|---|
| $condition | array |
Новое условие HAVING. Обратитесь к having() для получения информации о способах задания этого параметра. |
| return | $this |
Сам объект запроса |
orHaving() public method
Добавляет дополнительное условие HAVING к существующему.
Новое условие и существующее будут объединены с помощью оператора OR.
См. также:
| public $this orHaving ( $condition, $params = [] ) | ||
|---|---|---|
| $condition | string|array|yii\db\Expression |
Новое условие HAVING. Обратитесь к where() для получения информации о способах задания этого параметра. |
| $params | array |
Параметры (имя => значение), которые будут привязаны к запросу. |
| return | $this |
Сам объект запроса |
orWhere() public method
Добавляет дополнительное условие WHERE к существующему.
Новое условие и существующее будут объединены с помощью оператора OR.
См. также:
| public $this orWhere ( $condition, $params = [] ) | ||
|---|---|---|
| $condition | string|array|yii\db\Expression |
Новое условие WHERE. Обратитесь к where() для получения информации о способах задания этого параметра. |
| $params | array |
Параметры (имя => значение), которые будут привязаны к запросу. |
| return | $this |
Сам объект запроса |
params() public method
Устанавливает параметры, которые будут привязаны к запросу.
См. также addParams().
| public $this params ( $params ) | ||
|---|---|---|
| $params | array |
Список значений параметров запроса, индексированных маркерами параметров. Например, |
| return | $this |
Сам объект запроса |
populate() public method
Преобразует сырые результаты запроса в формат, указанный в этом запросе.
Этот метод используется внутренне для преобразования данных, извлеченных из базы данных, в требуемый формат этого запроса.
| public array populate ( $rows ) | ||
|---|---|---|
| $rows | array |
Сырой результат запроса из базы данных |
| return | array |
Преобразованный результат запроса |
prepare() public method
Готовит к построению SQL.
Этот метод вызывается yii\db\QueryBuilder при начале построения SQL из объекта запроса. Вы можете переопределить этот метод, чтобы выполнить окончательную подготовку при преобразовании запроса в SQL-запрос.
| public $this prepare ( $builder ) | ||
|---|---|---|
| $builder | yii\db\QueryBuilder | |
| return | $this |
Подготовленный экземпляр запроса, который будет использоваться yii\db\QueryBuilder для построения SQL |
queryScalar() protected method
Запрашивает скалярное значение, сначала установив select().
Восстанавливает значение select, чтобы этот запрос можно было повторно использовать.
| protected boolean|string queryScalar ( $selectExpression, $db ) | ||
|---|---|---|
| $selectExpression | string|yii\db\Expression | |
| $db | yii\db\Connection|null | |
rightJoin() public method
Добавляет часть RIGHT OUTER JOIN к запросу.
| public $this rightJoin ( $table, $on = '', $params = [] ) | ||
|---|---|---|
| $table | string|array |
Таблица, которая должна быть присоединена. Используйте строку для представления имени таблицы, которая должна быть присоединена. Имя таблицы может содержать префикс схемы (например, 'public.user') и/или псевдоним таблицы (например, 'user u'). Метод автоматически приводит имя таблицы к каноническому виду, если имя не содержит скобок (что означает, что таблица задаётся как подзапрос или выражение базы данных). Используйте массив для присоединения подзапроса. Массив должен содержать только один элемент. Значение должно быть объектом yii\db\Query, представляющим подзапрос, а соответствующий ключ представляет псевдоним для подзапроса. |
| $on | string|array |
Условие объединения, которое должно появиться в части ON. Обратитесь к join() для получения информации о способах задания этого параметра. |
| $params | array |
Параметры (имя => значение), которые будут привязаны к запросу |
| return | $this |
Сам объект запроса |
scalar() public method
Возвращает результат запроса в виде скалярного значения.
Возвращаемое значение будет первой колонкой в первой строке результатов запроса.
| public string|null|false scalar ( $db = null ) | ||
|---|---|---|
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использован компонент |
| return | string|null|false |
Значение первой колонки в первой строке результата запроса. Возвращается False, если результат запроса пуст. |
select() public method
Устанавливает часть SELECT запроса.
| public $this select ( $columns, $option = null ) | ||
|---|---|---|
| $columns | string|array|yii\db\Expression |
Столбцы, которые нужно выбрать. Столбцы могут быть указаны в строке (например, "id, name") или массиве (например, ['id', 'name']). Столбцы могут быть префиксами с именами таблиц (например, "user.id") и/или содержать псевдонимы столбцов (например, "user.id AS user_id"). Метод автоматически приводит имена столбцов к каноническому виду, если имя не содержит скобок (что означает, что столбец содержит выражение базы данных). Выражение базы данных также может быть передано в виде объекта yii\db\Expression. Обратите внимание, что если вы выбираете выражение, подобное Когда столбцы указаны как массив, вы также можете использовать ключи массива в качестве псевдонимов столбцов (если столбцу не нужен псевдоним, не используйте строковый ключ). Начиная с версии 2.0.1, вы также можете выбрать подзапросы в качестве столбцов, указав каждый такой столбец как экземпляр |
| $option | string |
Дополнительный параметр, который следует добавить к ключевому слову «SELECT». Например, в MySQL параметр «SQL_CALC_FOUND_ROWS» может быть использован. |
| return | $this |
Сам объект запроса |
sum() public method
Возвращает сумму значений указанного столбца.
| public mixed sum ( $q, $db = null ) | ||
|---|---|---|
| $q | строка |
Имя столбца или выражение. Убедитесь, что вы правильно оборачиваете имена столбцов в выражении. |
| $db | yii\db\Connection |
Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не указан, будет использован компонент |
| return | смешанный тип |
Сумма указанных значений столбца. |
union() public method
Добавляет SQL-запрос, используя оператор UNION.
| public $this union ( $sql, $all = false ) | ||
|---|---|---|
| $sql | строка|yii\db\Query |
SQL-запрос, который нужно добавить с помощью UNION |
| $all | boolean |
TRUE, если используется UNION ALL, и FALSE, если используется UNION |
| return | $this |
Объект запроса |
where() public method
Устанавливает часть WHERE запроса.
Метод требует параметр $condition, и необязательно параметр $params, определяющий значения, которые должны быть связаны с запросом.
Параметр $condition должен быть либо строкой (например, 'id=1'), либо массивом.
Параметр $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 $this where ( $condition, $params = [] ) | ||
|---|---|---|
| $condition | строка|массив|yii\db\Expression |
Условие, которое должно быть помещено в часть WHERE. |
| $params | массив |
Параметры (имя => значение), которые нужно привязать к запросу. |
| return | $this |
Объект запроса |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-query.html