I know how to display name instead of id in Yii framework in gridview and detail view.
Here is part of codes in view.php
<?= DetailView::widget([
'model' => $model,
'condensed' => false,
'hover' => true,
'attributes' => [
'user_branch_id',
//'user_id',
[
'attribute'=>'user_id',
'value' =>$model->user->username,
],
//'branch_id',
[
'attribute'=>'branch_id',
'value' =>$model->branch->branch_name,
],
'status',
/* [
'attribute' => 'created_at',
'format' => [
'datetime', (isset(Yii::$app->modules['datecontrol']['displaySettings']['datetime']))
? Yii::$app->modules['datecontrol']['displaySettings']['datetime']
: 'd-m-Y H:i:s A'
],
'type' => DetailView::INPUT_WIDGET,
'widgetOptions' => [
'class' => DateControl::classname(),
'type' => DateControl::FORMAT_DATETIME
]
],
*/
**// 'created_by',
[
'attribute'=>'created_by',
'value' =>$model->user->username,
],**
[
'attribute' => 'last_update',
'format' => [
'datetime', (isset(Yii::$app->modules['datecontrol']['displaySettings']['datetime']))
? Yii::$app->modules['datecontrol']['displaySettings']['datetime']
: 'd-m-Y H:i:s A'
],
'type' => DetailView::INPUT_WIDGET,
'widgetOptions' => [
'class' => DateControl::classname(),
'type' => DateControl::FORMAT_DATETIME
]
],
],
'deleteOptions' => [
'url' => ['delete', 'id' => $model->user_id],
],
'enableEditMode' => true,
]) ?>
I have these attributes:
1. [
'attribute'=>'user_id',
'value' =>$model->user->username,
],
2. [
'attribute'=>'created_by',
'value' =>$model->user->username,
],
when I retrieve as shown on a screenshot below, it show same username, while id are different i.e.
column created_by: 1 column user_id: 3
Finally I solve my problem, at the model, because two columns are foreign keys from same table user, the model generate two get functions
Then my code solutions are [ 'attribute'=>'user_id', 'value' =>$model->user->username, ], 'attribute'=>'created_by', 'value' =>$model->createdBy->username, ],