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
- 4227 reads