Как мне получить имя пользователя? (yii2) - PullRequest
0 голосов
/ 03 августа 2020

Извините, я новичок в yii2, я так стараюсь к нему привыкнуть :( Я действительно просто хочу отобразить имя моего пользователя, а не его идентификатор, и не могу понять, что я должен сделать для получения, из-за того, что ID находится в одной таблице, а имя - в другой. Это моя база данных и код:

У меня есть 3 таблицы:

tbl_user_notification:

id(PK), comment

tbl_user_notification_users:

id(PK), n_id (FK), user_id (FK)

tbl_user:

id(PK), first_name, last_name.

На странице индекса уведомления я хочу отобразить комментарий (из tbl_user_notification) и имя и фамилию пользователей, которым было отправлено уведомление to (from tbl_user).

Однако мне удается отобразить только идентификатор на странице индекса. Как я могу показать имя, пожалуйста?

Модель уведомления:

    public function getNotifUsers()
    {
        return $this->hasOne(NotificationsUsers::className(), ['n_id' => 'id']);
    }

Моя индексная страница уведомлений:

GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],
                //'id',
                [
                    'label' => 'First Name',
                    'value' => 'notifUsers.user_id',
                ],
                'comments',
(etc)

1 Ответ

0 голосов
/ 04 августа 2020
• 1000 модель в модель User, потому что у нее есть user_id.

Решение: из модели userNotificationUser добавьте новую функцию:

   public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }

Затем в Gridview вы просто вызовите соединение последовательно - сначала notifUser, затем user, затем атрибут пользователя:

GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],
                'notifUsers.user.first_name'
                // or
                [
                    'label' => 'First Name',
                    'value' => 'notifUsers.user.first_name',
                ],
                'comments',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...