Класс yii\sphinx\ActiveQuery
| Наследование | yii\sphinx\ActiveQuery » yii\sphinx\Query » yii\db\Query » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable, yii\db\ActiveQueryInterface, yii\db\QueryInterface |
| Использует Трейты | yii\db\ActiveQueryTrait, yii\db\ActiveRelationTrait, yii\db\QueryTrait |
| Доступен с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2-sphinx/blob/master/ActiveQuery.php |
ActiveQuery представляет запрос Sphinx, связанный с классом Active Record.
ActiveQuery может быть обычным запросом или использоваться в реляционном контексте.
Экземпляры ActiveQuery обычно создаются методами yii\sphinx\ActiveRecord::find() и yii\sphinx\ActiveRecord::findBySql(). Реляционные запросы создаются методами yii\sphinx\ActiveRecord::hasOne() и yii\sphinx\ActiveRecord::hasMany().
Обычный запрос
Поскольку ActiveQuery расширяет yii\sphinx\Query, можно использовать методы запроса, такие как where(), orderBy(), для настройки параметров запроса.
ActiveQuery также предоставляет следующие дополнительные параметры запроса:
- with(): список отношений, с которыми должен выполняться этот запрос.
- indexBy(): имя столбца, по которому должны индексироваться результаты запроса.
- asArray(): следует ли возвращать каждую запись в виде массива.
Эти параметры могут быть настроены с помощью методов с таким же именем. Например:
$articles = Article::find()->with('source')->asArray()->all();
ActiveQuery позволяет создавать фрагменты кода, используя данные, предоставленные ActiveRecord. Для этого можно использовать метод snippetByModel(). Например:
class Article extends ActiveRecord
{
public function getSource()
{
return $this->hasOne('db', ArticleDb::className(), ['id' => 'id']);
}
public function getSnippetSource()
{
return $this->source->content;
}
...
}
$articles = Article::find()->with('source')->snippetByModel()->all();
Реляционный запрос
В реляционном контексте ActiveQuery представляет отношение между двумя классами Active Record.
Реляционные экземпляры ActiveQuery обычно создаются вызовом yii\sphinx\ActiveRecord::hasOne() и yii\sphinx\ActiveRecord::hasMany(). Класс Active Record объявляет отношение, определяя метод-геттер, который вызывает один из вышеперечисленных методов и возвращает созданный объект ActiveQuery.
Отношение задаётся свойством $link, которое представляет ассоциацию между столбцами различных таблиц; кратность отношения указывается свойством $multiple.
Если отношение включает промежуточную таблицу, оно может быть задано методом via(). Этот метод может быть вызван только в реляционном контексте. То же самое относится к методу inverseOf(), который помечает отношение как обратное к другому.
Общедоступные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $asArray | boolean | Возвращать ли каждую запись в виде массива. | yii\db\ActiveQueryTrait |
| $behaviors | yii\base\Behavior[] | Список присоединённых к этому компоненту поведений. | yii\base\Component |
| $connection | yii\sphinx\Connection | Экземпляр соединения Sphinx. | yii\sphinx\Query |
| $distinct | boolean | Выбирать ли только уникальные строки данных. | yii\db\Query |
| $emulateExecution | boolean | Эмулировать ли фактическое выполнение запроса, возвращая пустые или ложные результаты. | yii\db\QueryTrait |
| $facets | array | Параметры поиска по аспектам. | yii\sphinx\Query |
| $from | array | Таблица(ы), из которых следует выбирать. | yii\db\Query |
| $groupBy | array | Как сгруппировать результаты запроса. | yii\db\Query |
| $groupLimit | integer | Предел для групп: вернуть (не более) N лучших совпадений для каждой группы. | yii\sphinx\Query |
| $having | string|array|yii\db\Expression | Условие, которое должно быть применено в разделе GROUP BY. | yii\db\Query |
| $indexBy | string|callable | Имя столбца, по которому должны быть индексированы результаты запроса. | yii\db\QueryTrait |
| $inverseOf | string | Имя связи, обратной данной. | yii\db\ActiveRelationTrait |
| $join | array | Как объединить с другими таблицами. | yii\db\Query |
| $limit | integer|yii\db\Expression | Максимальное количество записей, которые должны быть возвращены. | yii\db\QueryTrait |
| $link | array | Столбцы первичной и внешней таблиц, которые устанавливают связь. | yii\db\ActiveRelationTrait |
| $match | string|yii\db\Expression | Текст, который должен быть проиндексирован в режиме полнотекстового поиска. | yii\sphinx\Query |
| $modelClass | string | Имя класса ActiveRecord. | yii\db\ActiveQueryTrait |
| $multiple | boolean | Представляет ли этот запрос отношение к нескольким записям. | yii\db\ActiveRelationTrait |
| $offset | integer|yii\db\Expression | Смещение с нулевой точки, от которого должны возвращаться записи. | yii\db\QueryTrait |
| $options | array | Параметры запроса в формате: optionName => optionValue. Они составят запрос OPTION. | yii\sphinx\Query |
| $orderBy | array | Как отсортировать результаты запроса. | yii\db\QueryTrait |
| $params | array | Список значений параметров запроса, индексированных параметрами-заполнителями. | yii\db\Query |
| $primaryModel | yii\db\ActiveRecord | Основная модель реляционного запроса. | yii\db\ActiveRelationTrait |
| $select | array | Столбцы, которые выбираются. | yii\db\Query |
| $selectOption | string | Дополнительный параметр, который следует добавить к ключевому слову 'SELECT'. | yii\db\Query |
| $showMeta | boolean|string|yii\db\Expression | Выполнять ли автоматически запрос 'SHOW META' по отношению к основному. | yii\sphinx\Query |
| $snippetCallback | callable | PHP обратный вызов, который должен использоваться для извлечения исходных данных для фрагментов. | yii\sphinx\Query |
| $snippetOptions | array | Параметры запроса для вызова фрагмента. | yii\sphinx\Query |
| $sql | string | SQL-запрос, который следует выполнить для получения записей AR. | yii\sphinx\ActiveQuery |
| $union | array | Используется для построения клаузы UNION(ов) в SQL-запросе. | yii\db\Query |
| $via | array|object | Запрос, связанный со связующей таблицей. | yii\db\ActiveRelationTrait |
| $where | string|array | Условие запроса. | yii\db\QueryTrait |
| $with | array | Список связей, с которыми должен выполняться этот запрос. | yii\db\ActiveQueryTrait |
| $within | string | Оператор WITHIN GROUP ORDER BY. | yii\sphinx\Query |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Клонирует внутренние объекты. | yii\db\ActiveRelationTrait |
| __construct() | Конструктор. | yii\sphinx\ActiveQuery |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в null. | yii\base\Component |
| addFacets() | Добавляет дополнительную часть запроса FACET. | yii\sphinx\Query |
| addGroupBy() | Добавляет дополнительные столбцы группировки к существующим. | yii\db\Query |
| addOptions() | Добавляет дополнительные параметры запроса. | yii\sphinx\Query |
| addOrderBy() | Добавляет дополнительные столбцы ORDER BY в запрос. | yii\db\QueryTrait |
| addParams() | Добавляет дополнительные параметры для привязки к запросу. | yii\db\Query |
| addSelect() | Добавляет больше столбцов в часть SELECT запроса. | yii\db\Query |
| addWithin() | Добавляет дополнительные столбцы WITHIN GROUP ORDER BY в запрос. | yii\sphinx\Query |
| all() | Выполняет запрос и возвращает все результаты в виде массива. | yii\sphinx\ActiveQuery |
| andFilterCompare() | Добавляет условие фильтрации для определенного столбца и позволяет пользователю выбрать оператор фильтра. | yii\db\Query |
| andFilterHaving() | Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды. | yii\db\Query |
| andFilterWhere() | Добавляет дополнительное условие WHERE к существующему, но игнорирует пустые операнды. | yii\db\QueryTrait |
| andHaving() | Добавляет дополнительное условие HAVING к существующему. | yii\db\Query |
| andWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\QueryTrait |
| asArray() | Устанавливает свойство asArray(). | yii\db\ActiveQueryTrait |
| 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\sphinx\Query |
| createCommand() | Создает команду DB, которая может быть использована для выполнения этого запроса. | yii\sphinx\ActiveQuery |
| 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 |
| facets() | Устанавливает часть запроса FACET. | yii\sphinx\Query |
| filterHaving() | Устанавливает часть HAVING запроса, но игнорирует пустые операнды. | yii\db\Query |
| filterWhere() | Устанавливает часть WHERE запроса, но игнорирует пустые операнды. | yii\db\QueryTrait |
| findFor() | Находит связанные записи для указанной основной записи. | yii\db\ActiveRelationTrait |
| findWith() | Находит записи, соответствующие одному или нескольким отношениям, и заполняет их в основные модели. | yii\db\ActiveQueryTrait |
| from() | Устанавливает часть FROM запроса. | yii\db\Query |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все поведения, присоединенные к этому компоненту. | yii\base\Component |
| getConnection() | yii\sphinx\Query | |
| groupBy() | Устанавливает часть GROUP BY запроса. | yii\db\Query |
| groupLimit() | Устанавливает лимит групп: возвращать (не более) N лучших совпадений для каждой группы. | yii\sphinx\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\sphinx\ActiveQuery |
| innerJoin() | Добавляет часть INNER JOIN к запросу. | yii\sphinx\Query |
| inverseOf() | Устанавливает имя отношения, являющегося обратным этому отношению. | yii\db\ActiveRelationTrait |
| join() | Добавляет часть JOIN к запросу. | yii\sphinx\Query |
| leftJoin() | Добавляет часть LEFT OUTER JOIN к запросу. | yii\sphinx\Query |
| limit() | Устанавливает часть LIMIT запроса. | yii\db\QueryTrait |
| match() | Устанавливает текст полнотекстового запроса. Этот текст будет составлен в оператор MATCH внутри условия WHERE. | yii\sphinx\Query |
| max() | Возвращает максимальное значение указанных значений столбцов. | yii\db\Query |
| min() | Возвращает минимальное значение указанных значений столбцов. | yii\db\Query |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| offset() | Устанавливает часть OFFSET запроса. | yii\db\QueryTrait |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| one() | Выполняет запрос и возвращает одну строку результата. | yii\sphinx\ActiveQuery |
| options() | Устанавливает параметры запроса. | yii\sphinx\Query |
| orFilterHaving() | Добавляет дополнительное условие HAVING к существующему, но игнорирует пустые операнды. | yii\db\Query |
| orFilterWhere() | Добавляет дополнительное условие WHERE к существующему, но игнорирует пустые операнды. | yii\db\QueryTrait |
| orHaving() | Добавляет дополнительное условие HAVING к существующему. | yii\db\Query |
| orWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\QueryTrait |
| orderBy() | Устанавливает часть ORDER BY запроса. | yii\db\QueryTrait |
| params() | Устанавливает параметры, которые должны быть связаны с запросом. | yii\db\Query |
| populate() | Преобразует результаты исходного запроса в формат, указанный в этом запросе. | yii\sphinx\ActiveQuery |
| populateRelation() | Находит связанные записи и заполняет их в основные модели. | yii\db\ActiveRelationTrait |
| prepare() | Подготавливается к построению SQL. | yii\db\Query |
| rightJoin() | Добавляет часть RIGHT OUTER JOIN к запросу. | yii\sphinx\Query |
| scalar() | Возвращает результат запроса как скалярное значение. | yii\db\Query |
| search() | Выполняет запрос и возвращает полный результат поиска, включая, например, hits, facets. | yii\sphinx\Query |
| select() | Устанавливает часть SELECT запроса. | yii\db\Query |
| setConnection() | yii\sphinx\Query | |
| showMeta() | Устанавливает, нужно ли автоматически выполнять 'SHOW META' для запроса поиска. | yii\sphinx\Query |
| snippetByModel() | Устанавливает snippetCallback() в fetchSnippetSourceFromModels(), что позволяет извлечь строки исходного фрагмента из моделей Active Record, используя метод yii\sphinx\ActiveRecord::getSnippetSource(). | yii\sphinx\ActiveQuery |
| snippetCallback() | Устанавливает PHP обратный вызов, который должен использоваться для получения исходных данных для построения фрагментов. | yii\sphinx\Query |
| snippetOptions() | Устанавливает параметры запроса фрагментов. | yii\sphinx\Query |
| sum() | Возвращает сумму указанных значений столбцов. | yii\db\Query |
| trigger() | Вызывает событие. | yii\base\Component |
| union() | Добавляет SQL-запрос с использованием оператора UNION. | yii\db\Query |
| via() | Указывает отношение, связанное с таблицей соединения. | yii\db\ActiveRelationTrait |
| where() | Устанавливает часть WHERE запроса. | yii\db\QueryTrait |
| with() | Указывает отношения, с которыми должен быть выполнен этот запрос. | yii\db\ActiveQueryTrait |
| within() | Устанавливает часть WITHIN GROUP ORDER BY запроса. | yii\sphinx\Query |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| callSnippets() | Создает фрагменты из предоставленных исходных данных. | yii\sphinx\ActiveQuery |
| callSnippetsInternal() | Создает фрагменты из предоставленных исходных данных по заданному индексу. | yii\sphinx\Query |
| createModels() | Преобразует найденные строки в экземпляры моделей. | yii\db\ActiveQueryTrait |
| defaultConnection() | yii\sphinx\ActiveQuery | |
| fetchSnippetSourceFromModels() | Извлекает источник фрагментов, используя метод yii\sphinx\ActiveRecord::getSnippetSource(). | yii\sphinx\ActiveQuery |
| fillUpSnippets() | Заполняет строки результатов запроса фрагментами, созданными на основе результата snippetCallback(). | yii\sphinx\Query |
| filterCondition() | Удаляет пустые операнды из заданного условия запроса. | yii\db\QueryTrait |
| isEmpty() | Возвращает значение, указывающее, является ли данное значение "пустым". | yii\db\QueryTrait |
| normalizeOrderBy() | Нормализует формат данных ORDER BY. | yii\db\QueryTrait |
| queryScalar() | Выполняет запрос скалярного значения, сначала установив select(). | yii\sphinx\Query |
События
| Событие | Тип | Описание | Определено в |
|---|---|---|---|
| EVENT_INIT | \yii\sphinx\Event | Событие, которое срабатывает при инициализации запроса через init(). | yii\sphinx\ActiveQuery |
Подробное описание свойств
$sql общедоступное свойство
SQL-запрос для получения записей AR. Он устанавливается методом yii\sphinx\ActiveRecord::findBySql().
public string $sql = null
Подробное описание методов
__construct() общедоступный метод
Конструктор.
| общедоступный void __construct ( $modelClass, $config = [] ) | ||
|---|---|---|
| $modelClass | массив |
Класс модели, связанный с этим запросом |
| $config | массив |
Настройки, которые необходимо применить к новосозданному объекту запроса |
all() общедоступный метод
Выполняет запрос и возвращает все результаты в виде массива.
| общедоступный массив all ( $db = null ) | ||
|---|---|---|
| $db | yii\sphinx\Connection |
Подключение к базе данных, используемое для создания команды базы данных. Если null, будет использовано подключение к базе данных, возвращаемое $modelClass. |
| возвращаемое значение | массив |
Результаты запроса. Если запрос не возвращает результатов, будет возвращен пустой массив. |
callSnippets() защищенный метод
Создаёт фрагменты из предоставленных исходных данных.
| защищенный массив callSnippets ( массив $source ) | ||
|---|---|---|
| $source | массив |
Исходные данные для извлечения фрагмента. |
| возвращаемое значение | массив |
Список фрагментов. |
| вызывает исключение | yii\base\InvalidCallException |
в случае, если match() не указан. |
createCommand() общедоступный метод
Создаёт команду базы данных, которую можно использовать для выполнения этого запроса.
| общедоступный yii\sphinx\Command createCommand ( $db = null ) | ||
|---|---|---|
| $db | yii\sphinx\Connection |
Подключение к базе данных, используемое для создания команды базы данных. Если null, будет использовано подключение к базе данных, возвращаемое $modelClass. |
| возвращаемое значение | yii\sphinx\Command |
Созданный экземпляр команды базы данных. |
defaultConnection() защищенный метод
| защищенный yii\sphinx\Connection defaultConnection ( ) | ||
|---|---|---|
| возвращаемое значение | yii\sphinx\Connection |
Значение по умолчанию для подключения. |
fetchSnippetSourceFromModels() защищенный метод
Извлекает источник фрагментов с помощью метода yii\sphinx\ActiveRecord::getSnippetSource().
| защищенный массив fetchSnippetSourceFromModels ( $models ) | ||
|---|---|---|
| $models | yii\sphinx\ActiveRecord[] |
Строки с результатами необработанного запроса. |
| возвращаемое значение | массив |
Строки-источники фрагментов. |
| вызывает исключение | yii\base\InvalidCallException |
если asArray() включено. |
init() общедоступный метод
Инициализирует объект.
Этот метод вызывается в конце конструктора. Стандартная реализация вызывает событие EVENT_INIT. При переопределении этого метода убедитесь, что вы вызываете родительскую реализацию в конце, чтобы гарантировать вызов события.
| общедоступный void init ( ) |
|---|
one() общедоступный метод
Выполняет запрос и возвращает одну строку результата.
| общедоступный yii\sphinx\ActiveRecord|массив|null one ( $db = null ) | ||
|---|---|---|
| $db | yii\sphinx\Connection |
Подключение к базе данных, используемое для создания команды базы данных. Если null, будет использовано подключение к базе данных, возвращаемое $modelClass. |
| возвращаемое значение | yii\sphinx\ActiveRecord|массив|null |
Одна строка результата запроса. В зависимости от настроек asArray(), результат запроса может быть массивом или объектом ActiveRecord. Будет возвращен null, если запрос не возвращает результатов. |
populate() общедоступный метод
Преобразует результаты необработанного запроса в формат, указанный в этом запросе.
Этот метод используется внутри для преобразования данных, извлечённых из базы данных, в формат, требуемый этим запросом.
| общедоступный массив populate ( $rows ) | ||
|---|---|---|
| $rows | массив |
Необработанные результаты запроса из базы данных |
| возвращаемое значение | массив |
Преобразованные результаты запроса |
snippetByModel() общедоступный метод
Устанавливает snippetCallback() на fetchSnippetSourceFromModels(), что позволяет извлекать строки-источники фрагментов из моделей Active Record с помощью метода yii\sphinx\ActiveRecord::getSnippetSource().
Например:
class Article extends ActiveRecord
{
public function getSnippetSource()
{
return file_get_contents('/path/to/source/files/' . $this->id . '.txt');;
}
}
$articles = Article::find()->snippetByModel()->all();
Предупреждение: это опция НЕ должна использоваться вместе с asArray()!
| общедоступный $this snippetByModel ( ) | ||
|---|---|---|
| возвращаемое значение | $this |
Сам объект запроса |
Подробности событий
EVENT_INIT событие типа \yii\sphinx\Event
Событие, которое срабатывает при инициализации запроса через init().
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-sphinx-activequery.html