Класс yii\elasticsearch\ActiveQuery
| Наследование | yii\elasticsearch\ActiveQuery » yii\elasticsearch\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-elasticsearch/blob/master/ActiveQuery.php |
ActiveQuery представляет yii\elasticsearch\Query, связанный с классом yii\elasticsearch\ActiveRecord.
Объект ActiveQuery может быть обычным запросом или использоваться в реляционном контексте.
Объекты ActiveQuery обычно создаются с помощью yii\elasticsearch\ActiveRecord::find(). Реляционные запросы создаются с помощью yii\elasticsearch\ActiveRecord::hasOne() и yii\elasticsearch\ActiveRecord::hasMany().
Запрос по умолчанию
ActiveQuery предоставляет следующие методы для получения результатов запроса:
- one(): возвращает один объект, заполненный первыми данными.
- all(): возвращает все объекты на основе результатов запроса.
- count(): возвращает количество объектов.
- scalar(): возвращает значение первой колонки в первой строке результата запроса.
- column(): возвращает значение первой колонки в результате запроса.
- exists(): возвращает значение, указывающее, содержит ли результат запроса данные или нет.
Поскольку ActiveQuery расширяет yii\elasticsearch\Query, можно использовать методы запроса, такие как where(), orderBy(), для настройки параметров запроса.
ActiveQuery также предоставляет следующие дополнительные параметры запроса:
- with(): список отношений, с которыми должен быть выполнен этот запрос.
- indexBy(): имя колонки, по которой должен индексироваться результат запроса.
- asArray(): указывает, следует ли возвращать каждый объект в виде массива.
Эти параметры можно настроить с помощью методов с таким же именем. Например:
$customers = Customer::find()->with('orders')->asArray()->all();
Примечание: elasticsearch по умолчанию ограничивает количество возвращаемых записей 10. Если ожидается получить больше записей, необходимо явно указать limit.
Реляционный запрос
В реляционном контексте ActiveQuery представляет отношение между двумя классами Active Record.
Объекты ActiveQuery в реляционном контексте обычно создаются с помощью вызова yii\elasticsearch\ActiveRecord::hasOne() и yii\elasticsearch\ActiveRecord::hasMany(). Класс Active Record объявляет отношение, определяя метод-геттер, который вызывает один из вышеперечисленных методов и возвращает созданный объект ActiveQuery.
Отношение задается через $link, представляющее ассоциацию между столбцами различных таблиц; а множественность отношения указывается через $multiple.
Если отношение включает таблицу соединения, оно может быть задано с помощью via(). Этот метод может вызываться только в реляционном контексте. То же самое относится к inverseOf(), который отмечает отношение как обратное другому отношению.
Примечание: elasticsearch по умолчанию ограничивает количество записей, возвращаемых любым запросом, 10. Если ожидается получить больше записей, необходимо явно указать limit в определении отношения. Это также важно для отношений, использующих via(), чтобы, если записи via ограничены 10, записи отношений также не превышали 10.
Примечание: В настоящее время with() не поддерживается в сочетании с asArray().
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $aggregations | массив | Список агрегаций для добавления в этот запрос. | yii\elasticsearch\Query |
| $asArray | булево | Определяет, нужно ли возвращать каждую запись в виде массива. | yii\db\ActiveQueryTrait |
| $behaviors | yii\base\Behavior[] | Список присоединённых к этому компоненту поведений. | yii\base\Component |
| $emulateExecution | булево | Определяет, нужно ли эмулировать фактическое выполнение запроса, возвращая пустые или ложные результаты. | yii\db\QueryTrait |
| $explain | булево | Включает объяснение для каждого совпадения, как был вычислен его рейтинг. | yii\elasticsearch\Query |
| $fields | массив | Поля, извлекаемые из документов. | yii\elasticsearch\Query |
| $filter | массив|строка | Часть фильтра этого запроса поиска. | yii\elasticsearch\Query |
| $highlight | массив | Часть выделения этого запроса поиска. | yii\elasticsearch\Query |
| $index | строка|массив | Индекс для извлечения данных. | yii\elasticsearch\Query |
| $indexBy | строка|вызываемый объект | Имя столбца, по которому должны индексироваться результаты запроса. | yii\db\QueryTrait |
| $inverseOf | строка | Имя отношения, являющегося обратным к этому отношению. | yii\db\ActiveRelationTrait |
| $limit | целое число|yii\db\Expression | Максимальное количество записей, которое должно быть возвращено. | yii\db\QueryTrait |
| $link | массив | Столбцы первичной и внешней таблиц, которые устанавливают отношение. | yii\db\ActiveRelationTrait |
| $minScore | вещественное число | Исключить документы, у которых _score меньше минимального значения, указанного в min_score | yii\elasticsearch\Query |
| $modelClass | строка | Имя класса ActiveRecord. | yii\db\ActiveQueryTrait |
| $multiple | булево | Определяет, представляет ли этот запрос отношение к более чем одной записи. | yii\db\ActiveRelationTrait |
| $offset | целое число|yii\db\Expression | Сдвиг с нулевым основанием, с которого должны возвращаться записи. | yii\db\QueryTrait |
| $options | массив | Список параметров, которые будут переданы командам, созданным этим запросом. | yii\elasticsearch\Query |
| $orderBy | массив | Как сортировать результаты запроса. | yii\db\QueryTrait |
| $postFilter | строка|массив | Часть запроса поиска для дифференциального фильтрации результатов поиска и агрегаций. | yii\elasticsearch\Query |
| $primaryModel | yii\db\ActiveRecord | Основная модель реляционного запроса. | yii\db\ActiveRelationTrait |
| $query | массив|строка | Часть запроса поиска. | yii\elasticsearch\Query |
| $source | массив | Этот параметр управляет тем, как возвращается поле _source из документов. | yii\elasticsearch\Query |
| $stats | массив | Часть запроса 'stats'. | yii\elasticsearch\Query |
| $suggest | массив | Список сущностей для добавления в этот запрос. | yii\elasticsearch\Query |
| $timeout | целое число | Таймаут поиска, ограничивающий выполнение запроса поиска заданным значением времени и прерывающий его с накопленными совпадениями, когда истекло время. | yii\elasticsearch\Query |
| $type | строка|массив | Тип для извлечения данных. | yii\elasticsearch\Query |
| $via | массив|объект | Запрос, связанный с таблицей соединения. | yii\db\ActiveRelationTrait |
| $where | строка|массив | Условие запроса. | yii\db\QueryTrait |
| $with | массив | Список отношений, с которыми должен выполняться этот запрос. | yii\db\ActiveQueryTrait |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Клонирует внутренние объекты. | yii\db\ActiveRelationTrait |
| __construct() | Конструктор. | yii\elasticsearch\ActiveQuery |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в null. | yii\base\Component |
| addAgg() | yii\elasticsearch\Query | |
| addAggregate() | Добавляет агрегацию к этому запросу. Поддерживает вложенные агрегации. | yii\elasticsearch\Query |
| addAggregation() | yii\elasticsearch\Query | |
| addOptions() | Добавляет дополнительные параметры, перезаписывая существующие. | yii\elasticsearch\Query |
| addOrderBy() | Добавляет дополнительные столбцы ORDER BY к запросу. | yii\db\QueryTrait |
| addSuggester() | Добавляет подсказчик к этому запросу. | yii\elasticsearch\Query |
| all() | Выполняет запрос и возвращает все результаты в виде массива. | yii\elasticsearch\ActiveQuery |
| andFilterWhere() | Добавляет дополнительное условие WHERE к существующему, но игнорирует пустые операнды. | yii\db\QueryTrait |
| andWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\QueryTrait |
| asArray() | Устанавливает свойство asArray(). | yii\db\ActiveQueryTrait |
| attachBehavior() | Присоединяет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| batch() | Запускает пакетный запрос. | yii\elasticsearch\Query |
| behaviors() | Возвращает список поведений, которые должен иметь этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли читать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| column() | Выполняет запрос и возвращает первый столбец результата. | yii\elasticsearch\ActiveQuery |
| count() | Возвращает количество записей. | yii\elasticsearch\Query |
| createCommand() | Создаёт команду БД, которая может быть использована для выполнения этого запроса. | yii\elasticsearch\ActiveQuery |
| delete() | Выполняет запрос и удаляет все соответствующие документы. | yii\elasticsearch\Query |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| each() | Запускает пакетный запрос и извлекает данные построчно. | yii\elasticsearch\Query |
| emulateExecution() | Устанавливает, нужно ли эмулировать выполнение запроса, предотвращая любое взаимодействие с хранилищем данных. | yii\db\QueryTrait |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| exists() | Возвращает значение, указывающее, содержит ли результат запроса какую-либо строку данных. | yii\elasticsearch\Query |
| explain() | Объяснить, как был вычислен рейтинг каждого документа. | yii\elasticsearch\Query |
| fields() | Устанавливает поля, которые нужно извлечь из документов. | yii\elasticsearch\Query |
| filter() | Устанавливает часть фильтра этого запроса поиска. | yii\elasticsearch\Query |
| filterWhere() | Устанавливает часть WHERE запроса, но игнорирует пустые операнды. | yii\db\QueryTrait |
| findFor() | Ищет связанные записи для указанной основной записи. | yii\db\ActiveRelationTrait |
| findWith() | Ищет записи, соответствующие одному или нескольким отношениям, и заполняет ими основные модели. | yii\db\ActiveQueryTrait |
| from() | Устанавливает индекс и тип для извлечения документов. | yii\elasticsearch\Query |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все поведения, присоединённые к этому компоненту. | yii\base\Component |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчик, присоединённый к именованному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| highlight() | Устанавливает параметры выделения для извлечения из документов. | yii\elasticsearch\Query |
| indexBy() | Устанавливает свойство indexBy(). | yii\db\QueryTrait |
| init() | Инициализирует объект. | yii\elasticsearch\ActiveQuery |
| inverseOf() | Устанавливает имя отношения, являющегося обратным для данного отношения. | yii\db\ActiveRelationTrait |
| limit() | Устанавливает часть LIMIT запроса. | yii\db\QueryTrait |
| minScore() | yii\elasticsearch\Query | |
| off() | Отсоединяет существующий обработчик событий от данного компонента. | yii\base\Component |
| offset() | Устанавливает часть OFFSET запроса. | yii\db\QueryTrait |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| one() | Выполняет запрос и возвращает одну строку результата. | yii\elasticsearch\ActiveQuery |
| options() | Устанавливает опции, которые будут переданы команде, созданной этим запросом. | yii\elasticsearch\Query |
| orFilterWhere() | Добавляет дополнительное условие WHERE к существующему, но игнорирует пустые операнды. | yii\db\QueryTrait |
| orWhere() | Добавляет дополнительное условие WHERE к существующему. | yii\db\QueryTrait |
| orderBy() | Устанавливает часть ORDER BY запроса. | yii\db\QueryTrait |
| populate() | Преобразует результаты сырого запроса в формат, указанный этим запросом. | yii\elasticsearch\ActiveQuery |
| populateRelation() | Находит связанные записи и заполняет их в первичные модели. | yii\db\ActiveRelationTrait |
| postFilter() | Устанавливает post_filter часть запроса поиска. | yii\elasticsearch\Query |
| query() | Устанавливает часть запроса данного запроса поиска. | yii\elasticsearch\Query |
| scalar() | Возвращает результат запроса как скалярное значение. | yii\elasticsearch\Query |
| search() | Выполняет запрос и возвращает весь результат поиска, включая, например, совпадения, аспекты, общее количество. | yii\elasticsearch\ActiveQuery |
| source() | Устанавливает фильтрацию источника, определяя, как должен возвращаться _source поле документа. | yii\elasticsearch\Query |
| stats() | Добавляет часть 'stats' к запросу. | yii\elasticsearch\Query |
| timeout() | Устанавливает таймаут поиска. | yii\elasticsearch\Query |
| trigger() | Вызывает событие. | yii\base\Component |
| via() | Указывает отношение, связанное с таблицей соединения. | yii\db\ActiveRelationTrait |
| where() | Устанавливает часть WHERE запроса. | yii\db\QueryTrait |
| with() | Указывает отношения, с которыми должен выполняться этот запрос. | yii\db\ActiveQueryTrait |
Защищенные методы
| Метод | Описание | Определено |
|---|---|---|
| createModels() | Преобразует найденные строки в экземпляры моделей | yii\db\ActiveQueryTrait |
| filterCondition() | Удаляет пустые операнды из данного условия запроса. | yii\db\QueryTrait |
| isEmpty() | Возвращает значение, указывающее, является ли данное значение "пустым". | yii\db\QueryTrait |
| normalizeOrderBy() | Нормализует формат данных ORDER BY | yii\db\QueryTrait |
События
| Событие | Тип | Описание | Определено |
|---|---|---|---|
| EVENT_INIT | \yii\elasticsearch\Event | Событие, которое срабатывает при инициализации запроса с помощью init(). | yii\elasticsearch\ActiveQuery |
Подробности методов
__construct() public method
Конструктор.
| public void __construct ( $modelClass, $config = [] ) | ||
|---|---|---|
| $modelClass | array |
Класс модели, связанной с этим запросом |
| $config | array |
Настройки, которые должны быть применены к новосозданному объекту запроса |
all() public method
Выполняет запрос и возвращает все результаты в виде массива.
| public array all ( $db = null ) | ||
|---|---|---|
| $db | yii\elasticsearch\Connection |
Подключение к БД, используемое для создания команды БД. Если равно null, будет использовано подключение к БД, возвращаемое $modelClass. |
| return | array |
Результаты запроса. Если запрос не возвращает ничего, будет возвращен пустой массив. |
column() public method
Выполняет запрос и возвращает первый столбец результата.
| public array column ( $field, $db = null ) | ||
|---|---|---|
| $field | string |
Поле для запроса |
| $db | yii\elasticsearch\Connection |
Подключение к базе данных, используемое для выполнения запроса. Если этот параметр не задан, будет использовано приложение компонента |
| return | array |
Первый столбец результата запроса. Пустой массив возвращается, если запрос не возвращает ничего. |
createCommand() public method
Создаёт команду БД, которая может быть использована для выполнения этого запроса.
| public yii\elasticsearch\Command createCommand ( $db = null ) | ||
|---|---|---|
| $db | yii\elasticsearch\Connection |
Подключение к БД, используемое для создания команды БД. Если равно null, будет использовано подключение к БД, возвращаемое $modelClass. |
| return | yii\elasticsearch\Command |
Созданный экземпляр команды БД. |
init() public method
Инициализирует объект.
Этот метод вызывается в конце конструктора. Стандартная реализация вызовет событие EVENT_INIT. Если вы переопределяете этот метод, убедитесь, что вызывается родительская реализация в конце, чтобы гарантировать вызов события.
| public void init ( ) |
|---|
one() public method
Выполняет запрос и возвращает единственную строку результата.
| public yii\elasticsearch\ActiveRecord|array|null one ( $db = null ) | ||
|---|---|---|
| $db | yii\elasticsearch\Connection |
Подключение к БД, используемое для создания команды БД. Если равно null, будет использовано подключение к БД, возвращаемое $modelClass. |
| return | yii\elasticsearch\ActiveRecord|array|null |
Единственная строка результата запроса. В зависимости от настройки asArray(), результат запроса может быть либо массивом, либо объектом ActiveRecord. Null будет возвращен, если запрос ничего не вернул. |
populate() public method (доступно с версии 2.0.4)
Преобразует сырые результаты запроса в формат, указанный в запросе.
Этот метод используется внутри для преобразования данных, извлеченных из базы данных, в требуемый формат этого запроса.
| public array populate ( $rows ) | ||
|---|---|---|
| $rows | array |
Сырой результат запроса из базы данных |
| return | array |
Преобразованный результат запроса |
search() public method
Выполняет запрос и возвращает полные результаты поиска, включая, например, совпадения, аспекты, общее количество совпадений.
| public array search ( $db = null, $options = [] ) | ||
|---|---|---|
| $db | yii\elasticsearch\Connection |
Подключение к базе данных, используемое для выполнения запроса. Если этот параметр не указан, используется компонент приложения |
| $options | array |
Опции, переданные с этим запросом. Возможные опции: |
| return | array |
Результаты запроса. |
Подробное описание событий
EVENT_INIT событие типа \yii\elasticsearch\Event
Событие, которое срабатывает при инициализации запроса с помощью init().
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-elasticsearch-activequery.html