Spec-Zone.ru › Yii 2.0

Интерфейс yii\db\QueryInterface

Все классы | Методы
Реализуется yii\db\ActiveQuery, yii\db\ActiveQueryInterface, yii\db\Query, yii\elasticsearch\ActiveQuery, yii\elasticsearch\Query, yii\mongodb\ActiveQuery, yii\mongodb\Query, yii\mongodb\file\ActiveQuery, yii\mongodb\file\Query, yii\sphinx\ActiveQuery, yii\sphinx\Query
Доступно с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/db/QueryInterface.php

Интерфейс 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") или массиве (например, ['id' => SORT_ASC, 'name' => SORT_DESC]). Метод автоматически приводит имена столбцов к каноническому виду, если столбец не содержит скобок (что означает, что столбец содержит выражение БД).

return $this

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

all() public abstract method

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

public abstract array all ( $db = null )
$db yii\db\Connection

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

return array

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

andFilterWhere() public abstract method

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

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

См. также:

  • filterWhere()
  • orFilterWhere()
public abstract $this andFilterWhere ( array $condition )
$condition array

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

return $this

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

andWhere() public abstract method

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

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

См. также:

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

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

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

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

return boolean

Содержит ли результат запроса хотя бы одну строку данных.

filterWhere() public abstract method

Устанавливает часть WHERE запроса, игнорируя пустые параметры.

См. также:

  • andFilterWhere()
  • orFilterWhere()
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

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

return array|boolean

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

orFilterWhere() public abstract method

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

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

См. также:

  • filterWhere()
  • andFilterWhere()
public abstract $this orFilterWhere ( array $condition )
$condition array

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

return $this

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

orWhere() public abstract method

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

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

См. также:

  • where()
  • andWhere()
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"), либо в массиве (например, ['id' => SORT_ASC, 'name' => SORT_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.

См. также:

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

Spec-Zone.ru

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