@Snewer

Почему не получается обратиться к связи через геттер?

Здравствуйте!

Создаю в модели связь:
function getTest(){
    return $this->hasOne( ... );
}


При работе с моделью при обращении к связи по $model->getTest()->prop возникает ошибка.
$model->test->prop работает нормально.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Потому что если Вы обращаетесь как к атрибуту - это одно, а как к методу другое.
$model->test аналог $model->getTest()->one()
Ответ написан
qonand
@qonand
Software Engineer
когда Вы обращаетесь к связи через метод $model->getTest() Вы в результате получаете объект ActiveQuery (объект запроса к базе) у которого вообще нет атрибутов, в том числе и prop. Когда же Вы обращаетесь к связи как с свойству $model->test, Yii автоматически выполняет запрос, обрабатывает результаты и формирует объект ActiveRecord (т.е. Вашу модель)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы