2015-05-14 2 views
1

У меня есть модель/таблица побуждение с 2 полямами (user_id и analyst_id), связанных с полем идентификатора в модели таблице пользователя.Два поля в таблице, связанное с полем другой таблицы

На мой взгляд, у меня есть GridView с полями:

[ 
    'attribute' => 'user_id', 
    'enableSorting' => true, 
    'value' => function ($model) {      
       return $model->user->username; 
      }, 
] 

Как сделать то же самое с analyst_id (мне нужно показать имя пользователя на основе другой идентификатор)?

UPDATE

enter image description here

ответ

0

Просто создайте еще одно соотношение для аналитика:

Добавить в модели:

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

Отображение в GridView:

[ 
    'attribute' => 'analyst_id', 
    'enableSorting' => true, 
    'value' => function ($model) {      
     return $model->analyst->username; 
    }, 
], 

Или, если аналитик не может существовать заменить return часть:

return $model->analyst ? $model->analyst->username : null; 
0

Я думаю

'value' => function ($model) {      
       return User::findOne($model->analyst_id)->username; 
      }, 

PS Добавить правильное пространство имен для пользователя

+0

ошибка синтаксиса, неожиданный ':' – gugoan

+0

У меня есть обновление ответ – scaisEdge

+0

теперь показывают: Попытка получить свойство не-объекта – gugoan

Смежные вопросы