yii2 Виртуальное поле модели атрибут (не существующий в БД) + обращение к hasOne() через $this -- Пример кода
Primary tabs
В этом примере мы создадим виртуальное поле модели, которое для своего определения использует связь модели hasOne() с другой сущностью -- т.е. нам нужны два метода:
/**
* Метод опреляющий связь
*
* @return \yii\db\ActiveQueryInterface
*/
public function getOrganization()
{
return $this->hasOne(Organization::className(), ['_id' => 'organization_id']);
}
/**
* Метод (геттеры) задающий определение виртуального атрибута organization_name
*
* @return type
*/
public function getOrganization_name()
{
$name = 'Не_установлено'; // значение по умолчанию
if (!empty($this->Organization->view_name)) { // если удалось извлечь реальные данные
$name = $this->Organization->view_name;
}
return $name;
}
Где:
- Organization -- класс модели, который связан с данным через поле organization_id
- organization_name -- вирутальный атрибут данной модели
В методе getOrganization_name() делается проверка, так как подразумевается, что к данной модели в данной момент может быть ещё не прикреплена ни одна организация.
После такого описания атрибут organization_name можно получать как и реальные атрибуты, например:
$orgName = $model->organization_name;
- Log in to post comments
- 4946 reads