Trait yii\db\ActiveRelationTrait
| Реализуется | 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/ActiveRelationTrait.php |
ActiveRelationTrait реализует общие методы и свойства для запросов активной записи с отношениями.
Открытые свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| $inverseOf | string | Имя отношения, являющегося обратным данному отношению. | yii\db\ActiveRelationTrait |
| $link | массив | Столбцы первичной и внешней таблиц, устанавливающие отношение. | yii\db\ActiveRelationTrait |
| $multiple | boolean | Определяет, представляет ли этот запрос отношение к нескольким записям. | yii\db\ActiveRelationTrait |
| $primaryModel | yii\db\ActiveRecord | Основная модель запроса с отношением. | yii\db\ActiveRelationTrait |
| $via | массив|объект | Запрос, связанный со вспомогательной таблицей. | yii\db\ActiveRelationTrait |
Открытые методы
| Метод | Описание | Определено |
|---|---|---|
| __clone() | Клонирует внутренние объекты. | yii\db\ActiveRelationTrait |
| findFor() | Ищет связанные записи для указанной основной записи. | yii\db\ActiveRelationTrait |
| inverseOf() | Устанавливает имя отношения, являющегося обратным данному отношению. | yii\db\ActiveRelationTrait |
| populateRelation() | Ищет связанные записи и заполняет их в основные модели. | yii\db\ActiveRelationTrait |
| via() | Определяет отношение, связанное со вспомогательной таблицей. | yii\db\ActiveRelationTrait |
Подробное описание свойств
$inverseOf открытое свойство
Имя отношения, являющегося обратным данному отношению. Например, у заказа есть клиент, что означает, что обратное отношение к "клиенту" — это "заказы", а обратное отношение к "заказам" — это "клиент". Если это свойство установлено, первичная(ые) запись(и) будут ссылаться через указанное отношение. Например, $customer->orders[0]->customer и $customer будут одним объектом, и доступ к клиенту заказа не вызовет новый запрос к БД. Это свойство используется только в контексте отношений.
См. также inverseOf().
public string $inverseOf = null
$link открытое свойство
Столбцы первичной и внешней таблиц, устанавливающие отношение. Ключи массива должны быть столбцами таблицы для этого отношения, а значения массива — соответствующими столбцами из первичной таблицы. Не нужно добавлять префиксы или кавычки к именам столбцов, так как это будет сделано автоматически Yii. Это свойство используется только в контексте отношений.
public array $link = null
$multiple открытое свойство
Указывает, представляет ли этот запрос отношение к нескольким записям. Это свойство используется только в контексте отношений. Если true, это отношение заполнит все результаты запроса в экземпляры AR, используя all(). Если false, будет извлечена только первая строка результатов, используя one().
public boolean $multiple = null
$primaryModel открытое свойство
Основная модель запроса с отношением. Используется только при ленивой загрузке с динамическими параметрами запроса.
public yii\db\ActiveRecord $primaryModel = null
$via открытое свойство
Запрос, связанный со вспомогательной таблицей. Пожалуйста, используйте via() для установки этого свойства, а не непосредственного его задания. Это свойство используется только в контексте отношений.
См. также via().
public array|object $via = null
Подробное описание методов
__clone() публичный метод
Клонирует внутренние объекты.
| public void __clone ( ) |
|---|
findFor() публичный метод
Находит связанные записи для указанной основной записи.
Этот метод вызывается при доступе к связи ActiveRecord в ленивом режиме.
| public mixed findFor ( $name, $model ) | ||
|---|---|---|
| $name | строка |
Имя связи |
| $model | yii\db\ActiveRecordInterface|yii\db\BaseActiveRecord |
Основная модель |
| return | mixed |
Связанная запись(и) |
| throws | yii\base\InvalidParamException |
если связь неверна |
inverseOf() публичный метод
Устанавливает имя связи, являющейся обратной данной связи.
Например, у заказа есть покупатель, что означает, что обратной связью к "покупателю" является "заказы", а обратной связью к "заказам" является "покупатель". Если этот атрибут задан, основная запись(и) будет(будут) ссылаться через указанную связь. Например, $customer->orders[0]->customer и $customer будут одним и тем же объектом, а доступ к покупателю заказа не будет вызывать новый запрос к БД.
Используйте этот метод при объявлении связи в классе yii\db\ActiveRecord:
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id'])->inverseOf('customer');
}
| public $this inverseOf ( $relationName ) | ||
|---|---|---|
| $relationName | строка |
Имя связи, обратной данной связи. |
| return | $this |
Объект самой связи. |
populateRelation() публичный метод
Находит связанные записи и заполняет ими основные модели.
| public массив populateRelation ( $name, &$primaryModels ) | ||
|---|---|---|
| $name | строка |
Имя связи |
| $primaryModels | массив |
Основные модели |
| return | массив |
Связанные модели |
| throws | yii\base\InvalidConfigException |
если $link неверна |
via() публичный метод
Определяет связь, связанную со справочной таблицей.
Используйте этот метод для указания записи/таблицы перекрёстной связи при объявлении связи в классе yii\db\ActiveRecord:
class Order extends ActiveRecord
{
public function getOrderItems() {
return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
}
public function getItems() {
return $this->hasMany(Item::className(), ['id' => 'item_id'])
->via('orderItems');
}
}
| public $this via ( $relationName, обратный вызов $callable = null ) | ||
|---|---|---|
| $relationName | строка |
Имя связи. Это относится к связи, объявленной в $primaryModel. |
| $callable | обратный вызов |
PHP-обратный вызов для настройки связи, связанной со справочной таблицей. Его сигнатура должна быть |
| return | $this |
Объект самой связи. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-activerelationtrait.html