255], [['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::class, 'targetAttribute' => ['user_id' => 'id']], ]; } public function attributeLabels(): array { return [ 'id' => Yii::t('user', 'ID'), 'user_id' => Yii::t('user', 'Пользователь'), 'first_name' => Yii::t('user', 'Имя'), 'last_name' => Yii::t('user', 'Фамилия'), 'middle_name' => Yii::t('user', 'Отчество'), 'full_name' => Yii::t('user', 'Полное имя'), 'about' => Yii::t('user', ''), 'nick_name' => Yii::t('user', 'Ник'), 'web' => Yii::t('user', 'Соцсеть'), 'telegram' => Yii::t('user', 'Телеграм'), 'birthday' => Yii::t('user', 'День рождения'), 'avatar' => Yii::t('user', 'Аватар'), 'location' => Yii::t('user', 'Локация'), 'phone' => Yii::t('user', 'Телефон'), 'test_try_count' => Yii::t('user', 'Попыток тестирования'), 'test_result' => Yii::t('user', 'Результат тестирования'), 'test_at' => Yii::t('user', 'Дата тестирования'), 'verified_at' => Yii::t('user', 'Аккаунт подтверждён'), 'blocked_at' => Yii::t('user', 'Заблокирован'), ]; } public function getUser(): ActiveQuery { return $this->hasOne(User::class, ['id' => 'user_id']); } public function getFullName(): string { return implode(' ', [$this->last_name, $this->first_name, $this->middle_name]); } // todo refactor all usersTypes public function behaviors(): array { return [ [ 'class' => AttributeBehavior::class, 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => 'full_name', ActiveRecord::EVENT_BEFORE_UPDATE => 'full_name', ], 'value' => function ($event) { return self::getFullName(); }, ], ]; } }