@MaikMain
Начинающий backend - developer

Yii2. Ошибка при выводе данных из связанных таблиц?

Всем, привет. Подскажи пожалуйста советом.
В админке есть возможность просмотреть пользователя и его профиль. Таблицы Users и Profiles связаны.
public function getProfile(): ActiveQuery
    {
        return $this->hasOne(Profiles::class, ['user_id' => 'id']);
    }


UserController:
public function actionView($id): string
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }


Во view.php вывожу 2 штуки DetailView:
1. Первый DetailView с юзером:
spoiler
<?= DetailView::widget([
                        'model' => $model,
                        'options' => [
                            'class' => 'table'
                        ],
                        'attributes' => [
                            'id',
                            'username',
                            'email:email',
                            'status',
                            'created_at:datetime',
                            'updated_at:datetime',
                        ],
                    ]) ?>


2. Второй DetailView с профилем:
spoiler
<?= DetailView::widget([
                            'model' => $model->profile,
                            'options' => [
                                'class' => 'table'
                            ],
                            'attributes' => [
                                [
                                    'attribute' => 'fio',
                                    'value' => function(Profiles $profile) {
                                        return $profile->lastName . ' ' . $profile->firstName . ' ' . $profile->midName;
                                    }
                                ],
                                [
                                    'attribute' => 'phone',
                                    'value' => function(Profiles $profile) {
                                        return Html::a($profile->phone, 'tel:'.str_replace(array('(', ')', ' ', '-'), '', $profile->phone));
                                    },
                                    'format' => 'raw'
                                ],
                            ],
                        ]) ?>


Если профиль заполнен то все данные корректно выводятся, а если не заполнен, то соответственно и записи в таблице Profiles не существует.

Вот ошибка:
638a5c93d4659548104634.jpeg
638a5c9f474c1742906431.jpeg

Как мне правильно вывести шаблон и в полях отобразить сообщения, что данных просто нет.

За ранее всем большое спасибо))
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
@MikMik
Перед выводом DetailView сделай проверку
if ($model->profile) {
  echo DetailView::widget([
                            'model' => $model->profile,
                            ......
 }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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