@Tokenchik

Как получить все поля их связанной таблицы в yii2?

Как получить остальные поля из связанной таблицы в yii2?
Сейчас я получаю одно поле следующим образом -
public function getBase() {
        return $this->hasOne(Base::className(), [ 'id' => 'base_id' ]);
    }

    public function getIp() {
        return $this->base->ip;
    }

Как видно связь идет по id базы, я получаю ip функцией getIp. Получается для каждого поля нужна такая функция?
И как быть допустим если мне нужно поле name из второй таблицы, несмотря на то что есть поле name и в этой таблице?
Ведь полученное в связи поле я указываю как аттрибут чтобы задать ему label в grid.
P.S. Приведенный код выше рабочий, нужное поле получаю.
  • Вопрос задан
  • 1116 просмотров
Решения вопроса 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Как видно связь идет по id базы, я получаю ip функцией getIp. Получается для каждого поля нужна такая функция?

Нет и для этого не обязательно. Можно так:
$models = Mymodel::find()->all();
foreach($models  as $one){
if(isset($one->base)){
echo $one->base->ip;
echo $one->base->name;
echo $one->base->eshe_chto-to;
}
}

Я даже больше скажу, смысла в вашей функции getIp() крайне мало, если бы хотя бы так:
public function getIp() {
        return ($this->base)?$this->base->ip:"нет данных";
    }
Ответ написан
qonand
@qonand
Software Engineer
Вы можете получить модель связанной таблицы, а уже из нее нужные Вам атрибуты, например так:
// получение конкретного атрибута
$model->base->ip;
// получение массива всех атрибутов
$model->base->attributes;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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