Spec-Zone.ru › Yii 2.0

Класс 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

Список значений параметров запроса, индексированных по заполнителям параметров. Например, [':name' => 'Dan', ':age' => 31].

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-запроса. Если этот параметр не указан, будет использоваться компонент приложения db.

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

Оператор для использования, когда оператор не указан в $value. По умолчанию =, выполняется точное соответствие.

return $this

Сам объект запроса

andFilterHaving() public method (available since version 2.0.11)

Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды.

Новое условие и существующее будут объединены с помощью оператора AND.

Этот метод аналогичен методу andHaving(). Основное различие заключается в том, что этот метод удалит пустые операнды запроса. В результате этот метод лучше всего подходит для построения условий запроса на основе значений фильтров, введенных пользователями.

См. также:

  • filterHaving()
  • orFilterHaving()
public $this andFilterHaving ( array $condition )
$condition array

Новое условие HAVING. Обратитесь к having() о том, как указать этот параметр.

return $this

Сам объект запроса

andHaving() public method

Добавляет дополнительное условие HAVING к существующему.

Новое условие и существующее будут объединены с помощью оператора AND.

См. также:

  • having()
  • orHaving()
public $this andHaving ( $condition, $params = [] )
$condition string|array|yii\db\Expression

Новое условие HAVING. Обратитесь к where() о том, как указать этот параметр.

$params array

Параметры (имя => значение) для привязки к запросу.

return $this

Сам объект запроса

andWhere() public method

Добавляет дополнительное условие WHERE к существующему.

Новое условие и существующее будут объединены с помощью оператора AND.

См. также:

  • where()
  • orWhere()
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-запроса. Если этот параметр не указан, будет использоваться компонент приложения db.

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-запроса. Если этот параметр не задан, будет использоваться компонент приложения db.

return array

Первый столбец результата запроса. Если запрос ничего не возвращает, возвращается пустой массив.

count() public method

Возвращает количество записей.

public integer|string count ( $q = '*', $db = null )
$q string

Выражение COUNT. По умолчанию равно '*'. Убедитесь, что вы правильно приводите имена столбцов в выражении.

$db yii\db\Connection

Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан (или равен null), будет использован компонент приложения db.

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-запроса. Если этот параметр не задан, будет использован компонент приложения db.

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-запроса. Если этот параметр не задан, будет использован компонент приложения db.

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(), вы не можете передавать параметры привязки к этому методу.

См. также:

  • having()
  • andFilterHaving()
  • orFilterHaving()
public $this filterHaving ( array $condition )
$condition array

Условия, которые должны быть помещены в часть HAVING. См. having() о том, как указать этот параметр.

return $this

Сам объект запроса

from() public method

Устанавливает часть FROM запроса.

public $this from ( $tables )
$tables string|array

Таблица(ы) для выборки. Это может быть строка (например, 'user') или массив (например, ['user', 'profile']) для указания одного или нескольких имён таблиц. Имена таблиц могут содержать префиксы схем (например, 'public.user') и/или псевдонимы таблиц (например, 'user u'). Метод автоматически приводит имена таблиц в соответствие, если они не содержат скобок (что означает, что таблица задана как подзапрос или выражение DB).

Когда таблицы заданы как массив, ключи массива также могут использоваться в качестве псевдонимов таблиц (если таблица не нуждается в псевдониме, не используйте строковый ключ).

Используйте объект 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 запроса.

См. также:

  • andHaving()
  • orHaving()
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'], это будет сопоставлять значение столбца post.author_id со строкой 'user.id'. Рекомендуется использовать синтаксис строки, который более подходит для присоединения:

'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-запроса. Если этот параметр не задан, будет использоваться компонент db приложения.

return mixed

Максимальное значение указанных значений столбца.

min() public method

Возвращает минимальное значение указанных значений столбца.

public mixed min ( $q, $db = null )
$q строка

Имя столбца или выражение. Убедитесь, что вы правильно цитируете имена столбцов в выражении.

$db yii\db\Connection

Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использоваться компонент db приложения.

return mixed

Минимальное значение указанных значений столбца.

one() public method

Выполняет запрос и возвращает единственную строку результата.

public массив|булево one ( $db = null )
$db yii\db\Connection

Подключение к базе данных, используемое для генерации SQL-запроса. Если этот параметр не задан, будет использоваться компонент db приложения.

return массив|булево

Первая строка (с точки зрения массива) результата запроса. Возвращается значение false, если запрос не возвращает ничего.

orFilterHaving() public method (доступно начиная с версии 2.0.11)

Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды.

Новое условие и существующее будут объединены с помощью оператора OR.

Этот метод похож на orHaving(). Основное различие заключается в том, что этот метод удаляет пустые операнды запроса. В результате этот метод лучше всего подходит для построения условий запроса на основе значений фильтров, введённых пользователем.

См. также:

  • filterHaving()
  • andFilterHaving()
public $this orFilterHaving ( array $condition )
$condition array

Новое условие HAVING. Обратитесь к having() для получения информации о способах задания этого параметра.

return $this

Сам объект запроса

orHaving() public method

Добавляет дополнительное условие HAVING к существующему.

Новое условие и существующее будут объединены с помощью оператора OR.

См. также:

  • having()
  • andHaving()
public $this orHaving ( $condition, $params = [] )
$condition string|array|yii\db\Expression

Новое условие HAVING. Обратитесь к where() для получения информации о способах задания этого параметра.

$params array

Параметры (имя => значение), которые будут привязаны к запросу.

return $this

Сам объект запроса

orWhere() public method

Добавляет дополнительное условие WHERE к существующему.

Новое условие и существующее будут объединены с помощью оператора OR.

См. также:

  • where()
  • andWhere()
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

Список значений параметров запроса, индексированных маркерами параметров. Например, [':name' => 'Dan', ':age' => 31].

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-запроса. Если этот параметр не задан, будет использован компонент db приложения.

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.

Обратите внимание, что если вы выбираете выражение, подобное CONCAT(first_name, ' ', last_name), вы должны использовать массив для указания столбцов. В противном случае выражение может быть неправильно разделено на несколько частей.

Когда столбцы указаны как массив, вы также можете использовать ключи массива в качестве псевдонимов столбцов (если столбцу не нужен псевдоним, не используйте строковый ключ).

Начиная с версии 2.0.1, вы также можете выбрать подзапросы в качестве столбцов, указав каждый такой столбец как экземпляр Query , представляющий подзапрос.

$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-запроса. Если этот параметр не указан, будет использован компонент db приложения.

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.

См. также:

  • andWhere()
  • orWhere()
  • yii\db\QueryInterface::where()
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API