我有两个表,一个是用户,另一个是注释,但是我没有使用任何类型的外键。我想在详细信息视图中显示用户表中的名称而不是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.''])),
],
],
]) ?>
答案 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])
),
],
],
]) ?>
如果username
是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(
User::findOne($model->user_id)->username,
Url::toRoute(['/profile-user/view', 'id' => $model->user_id])
),
],
],
]) ?>