Вызовите другое поле из одной таблицы во многие Yii2 - PullRequest
0 голосов
/ 07 июня 2018

У меня проблема здесь.Как я могу вызвать поле 'username' из таблицы пользователя?Я хочу показать имя пользователя здесь, а не user_id.Вот пикт: Я хочу показать имя пользователя, а не user_id в части 'Direquest oleh' и 'Disetujui / Ditolak oleh'

и вот мой код:

[
            'attribute' => 'waktu_request',
            'label' => 'Waktu Request',
            'format' => ['DateTime', 'php:d M Y H:i:s'],
            'filter' => '',
        ],
        [
            'attribute'=>'requested_by',
            'label' => 'Direquest oleh',
            'value' => function($model){
                if($model->requested_by == NULL){
                    return '-';
                }else{
                    return $model->requested_by;
                }
            }
        ],
        [
            'attribute'=>'approved_rejected_by',
            'label' => 'Disetujui/Ditolak oleh',
            'value' => function($model){
                if($model->approved_rejected_by == NULL){
                    return '-';
                }else{
                    return $model->approved_rejected_by;
                }
            }
        ],

Я надеюсь, что любой может решить мою проблему здесь.За ваше внимание я говорю спасибо.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Если вы использовали Gii для генерации модели и crud, у вас, вероятно, уже есть сгенерированные отношения с именами getRequestedBy() и getApprovedRejectedBy().

[
    'attribute'=>'requested_by',
    'label' => 'Direquest oleh',
    'value' => function($model){
        return ($model->requested_by) ? $model->requestedBy->username : '-';
    }
],
[
    'attribute'=>'approved_rejected_by',
    'label' => 'Disetujui/Ditolak oleh',
    'value' => function($model){
        return ($model->approved_rejected_by) ? $model->approvedRejectedBy->username : '-';
    }
],

Не забудьте добавить отношение в searchModel для быстрой загрузки, иначеуменьшить количество запросов.Например,

ModelName::find()->with(['requestedBy', 'approvedRejectedBy']);
0 голосов
/ 07 июня 2018

Прежде всего вам необходимо создать функцию в классе вашей модели, например,

public function getCreatedByText()
    {
        $user = User::findOne($this->created_by);
        if ($user != null) {
            return $user->username;
        }
        return '-';
    }

Затем вы назначаете эту функцию следующим образом:

'label' => 'Created At',
'value' =>  $model->getCreatedAtText()

, если у вас нетпонять, пожалуйста, дайте мне знать. Я буду стараться изо всех сил.

...