Особенность yii\db\ActiveQueryTrait
| Реализовано в | yii\db\ActiveQuery, yii\elasticsearch\ActiveQuery, yii\mongodb\ActiveQuery, yii\mongodb\file\ActiveQuery, yii\redis\ActiveQuery, yii\sphinx\ActiveQuery |
|---|---|
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveQueryTrait.php |
ActiveQueryTrait реализует общие методы и свойства для классов запросов активных записей.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $asArray | boolean | Возвращать ли каждую запись в виде массива. | yii\db\ActiveQueryTrait |
| $modelClass | string | Имя класса ActiveRecord. | yii\db\ActiveQueryTrait |
| $with | array | Список отношений, с которыми должен выполняться этот запрос. | yii\db\ActiveQueryTrait |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| asArray() | Устанавливает свойство asArray(). | yii\db\ActiveQueryTrait |
| findWith() | Ищет записи, соответствующие одному или нескольким отношениям, и заполняет ими основные модели. | yii\db\ActiveQueryTrait |
| with() | Указывает отношения, с которыми должен выполняться этот запрос. | yii\db\ActiveQueryTrait |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| createModels() | Преобразует найденные строки в экземпляры моделей. | yii\db\ActiveQueryTrait |
Подробное описание свойств
$asArray публичное свойство
Возвращать ли каждую запись в виде массива. Если false (по умолчанию), создается объект $modelClass для представления каждой записи.
public boolean $asArray = null
$modelClass публичное свойство
Имя класса ActiveRecord.
public string $modelClass = null
$with публичное свойство
Список отношений, с которыми должен выполняться этот запрос.
public array $with = null
Подробное описание методов
asArray() публичный метод
Устанавливает свойство asArray().
| public $this asArray ( $value = true ) | ||
|---|---|---|
| $value | boolean |
Возвращать ли результаты запроса в виде массивов вместо Active Records. |
| return | $this |
Сам объект запроса |
createModels() защищенный метод (доступен с версии 2.0.11)
Преобразует найденные строки в экземпляры моделей
| protected array|yii\db\ActiveRecord[] createModels ( $rows ) | ||
|---|---|---|
| $rows | array | |
findWith() публичный метод
Ищет записи, соответствующие одному или нескольким отношениям, и заполняет ими основные модели.
| public void findWith ( $with, &$models ) | ||
|---|---|---|
| $with | array |
Список отношений, с которыми должен выполняться этот запрос. Подробнее см. with(). |
| $models | array|yii\db\ActiveRecord[] |
Основные модели (могут быть экземплярами AR или массивами) |
with() публичный метод
Указывает отношения, с которыми должен выполняться этот запрос.
Параметры этого метода могут быть либо одной или несколькими строками, либо одним массивом имен отношений и необязательными обратными вызовами для настройки отношений.
Имя отношения может ссылаться на отношение, определенное в $modelClass, или на подотношение, представляющее отношение связанной записи. Например, orders.address означает отношение address , определенное в классе модели, соответствующем отношению orders.
Вот несколько примеров использования:
// find customers together with their orders and country
Customer::find()->with('orders', 'country')->all();
// find customers together with their orders and the orders' shipping address
Customer::find()->with('orders.address')->all();
// find customers together with their country and orders of status 1
Customer::find()->with([
'orders' => function (\yii\db\ActiveQuery $query) {
$query->andWhere('status = 1');
},
'country',
])->all();
Вы можете вызвать with() несколько раз. Каждый вызов добавит отношения к существующим. Например, следующие два оператора эквивалентны:
Customer::find()->with('orders', 'country')->all();
Customer::find()->with('orders')->with('country')->all();
| public $this with ( ) | ||
|---|---|---|
| return | $this |
Сам объект запроса |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-activequerytrait.html