如何在没有关系的Yii2上显示名称而不是ID

时间:2019-04-12 06:47:14

标签: php mysql yii2

我有两个表,一个是用户,另一个是注释,但是我没有使用任何类型的外键。我想在详细信息视图中显示用户表中的名称而不是ID。我怎样才能做到这一点?我的详细视图代码如下:

<?= DetailView::widget([
          'model' => $model,
          //To hide labels
          //'model' => $model,
          'template' => '<tr><td{contentOptions}>{value}</td></tr>',
          'attributes' => [
               [
                 'attribute' => 'user_id',
                 'format' => 'raw',
                 'label' =>'',
                 'value'=>Html::a($model->user_id, Url::toRoute(['/profile-user/view?id='.$model->user_id.''])),
               ],
          ],
      ]) ?>

预期的输出结果是这样的

<?= DetailView::widget([
          'model' => $model,
          //To hide labels
          //'model' => $model,
          'template' => '<tr><td{contentOptions}>{value}</td></tr>',
          'attributes' => [
               [
                 'attribute' => 'user_id',
                 'format' => 'raw',
                 'label' =>'',
                 'value'=>Html::a($model->username, Url::toRoute(['/profile-user/view?id='.$model->user_id.''])),
               ],
          ],
      ]) ?>

1 个答案:

答案 0 :(得分:1)

如果username是登录用户的名称,则可以使用Yii::$app->user->identity->username

<?= DetailView::widget([
      'model' => $model,
      //To hide labels
      //'model' => $model,
      'template' => '<tr><td{contentOptions}>{value}</td></tr>',
      'attributes' => [
           [
             'attribute' => 'user_id',
             'format' => 'raw',
             'label' => '',
             'value' => Html::a(
                 Yii::$app->user->identity->username,
                 Url::toRoute(['/profile-user/view', 'id' => $model->user_id])
             ),
           ],
      ],
  ]) ?>

如果usernameUser模型的一列,且ID为主键,则可以使用:

<?= DetailView::widget([
      'model' => $model,
      //To hide labels
      //'model' => $model,
      'template' => '<tr><td{contentOptions}>{value}</td></tr>',
      'attributes' => [
           [
             'attribute' => 'user_id',
             'format' => 'raw',
             'label' => '',
             'value' => Html::a(
                 User::findOne($model->user_id)->username,
                 Url::toRoute(['/profile-user/view', 'id' => $model->user_id])
             ),
           ],
      ],
  ]) ?>