Как получить значение атрибута связаной модели, при отсутствии записи в бд

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
skoriylight
Сообщения: 17
Зарегистрирован: 2015.12.15, 22:27

Как получить значение атрибута связаной модели, при отсутствии записи в бд

Сообщение skoriylight »

например:

Код: Выделить всё

Class User extends \yii\db\ActiveRecord
{

    public function getProfile()
    {

        return this->owner->hasOne(Profile::className(), ['user_id' => 'id']);

    }

}


Class Profile extends\yii\db\ActiveRecord
{

    public function rules() 
    {

        return ['name', string];

    }
    ...
}
Если записи в таблице profile с соответствующим user_id нет, то $user->profile вернет Null. Но в предствлении есть вывод: $user->profile->name, что в следствии выбрасывает исключение. Каким образом этого избежать, чтоб при отсутсвии записи в таблице, метод getProfile создавал пустой экзепляр Profile. Или есть другой способ это реализовать "без костылей"
skoriylight
Сообщения: 17
Зарегистрирован: 2015.12.15, 22:27

Re: Как получить значение атрибута связаной модели, при отсутствии записи в бд

Сообщение skoriylight »

Сделал так:

Код: Выделить всё

Class User extends ActiveRecords{

   ...

   public function getProfileName()
   { 
      return !is_null($this->profile)?$this->profile->name:''; 
   } 

}
Ответить