@hollanditkzn

Почему не отображается связанные таблицы в DetailView?

У меня есть связанные таблицы
public function getIdSotrud()
    {
        return $this->hasOne(User::className(), ['id' => 'id_sotrud']);
    }

И не получается вывести name из связанных таблиц
в контроллере
public function actionView($id)
    {
        $user->idSotrud->name;

        return $this->render('view', [
            'model' => $this->findModel($id),
            'user' => $user,
        ]);
    }

И в самом виджете
DetailView::widget([
 [
                'attribute' => 'id_sotrud',
                'value' => $user,
            ],
])
  • Вопрос задан
  • 354 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
Не отображается потому что Вы бред написали. Вы бы перед тем как код писать доку бы почитали
public function actionView($id)
{
    $user->idSotrud->name; // что за переменная $user откуда она взялась? что Вы вообще хотите сделать в этой строке.
    return $this->render('view', [
        'model' => $this->findModel($id),
        'user' => $user,
    ]);
}


DetailView::widget([
    [
        'attribute' => 'id_sotrud', // а тут что Вы ожидаете увидеть? 
                                  // данные реляции? так Вы ж их не выводите
        'value' => $user,
    ],
])
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы бы ошибки включили, так как $user->idSotrud->name; сразу выдало бы ошибку.
public function actionView($id)
    {
        $user->idSotrud->name; // тут же у Вас просто переменная из ниоткуда появилась

        return $this->render('view', [
            'model' => $this->findModel($id), //тут тоже
            'user' => $user,
        ]);
    }

ожидается что-то типа:
public function actionView($id)
    {
        $model = MyModel::find()->andWhere(['id'=>$id])->with('idSotrud')->one();
        $sotrud_name = $model->idSotrud->name;

        return $this->render('view', [
            'model' => $model,
            'sotrud_name' => $sotrud_name,
        ]);
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы