如何在yii2中显示相关表格中的数据?

时间:2015-04-07 07:27:49

标签: php yii2

我遇到了使用yii2显示相关表格数据的问题。我使用自己的设计,而不是使用yii2设计。 我有两个表用户状态

TABLE `user`(
`user_id` int(11) NOT NULL auto_increment,
`state_id` int(11) null 

table `state`(
`state_id` int(11) NOT NULL auto_increment,
`state` varchar(225) null

UserModel.php

public function getStates()
{
    return $this->hasOne(State::className(),['state_id' =>'state_id']);
}

UserController.php

 public function actionView($id)
{
    return $this->render('view', [
        'model' => $this->findModel($id),

    ]);
}

State.php

 public function attributeLabels()
{
    return [
        'state_id' => 'State ID',
        'state' => 'State',
     ];
}

public function getState()
{
    return $this->state.'';
}

view.php

<table>..<tr>
    <td>Negeri</td>
    <td><?php echo $model->states; ?></td>
</tr>

当我使用$ model-&gt;状态时;我在浏览器执行时遇到错误。错误是“类app \ models \ State的对象无法转换为字符串”。在我编写代码之前,我使用$ model-&gt; state_id,结果是数值,即表状态的state_id属性。我想要的是状态的名称(来自表状态的状态属性),而不是state_id。如果使用yii2设计,结果将根据我的需要显示。该代码看起来像这样::

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'states.state',

    ],
]) ?>  

所以,我的问题是如何从我创建的state.php中调用UserModel.php或getState()函数getStates()到view.php并显示相关表中的数据? 。对不起,如果我的英语不太好。

1 个答案:

答案 0 :(得分:5)

由于$model->states是一个对象,您应该只使用:

<?= $model->states->state ?>

在状态模型中你不需要getState()函数。