Php 从相关记录中获取数据

Php 从相关记录中获取数据,php,database-design,yii,Php,Database Design,Yii,当使用外来ID将不同表中的数据链接在一起时,我通常会编写不雅观的代码来获取所需的信息。以下是一个例子: 假设我有一个带有以下字段的表消息: id, touserId, fromuserId, title, message touserId和fromuserId分别指发送和接收消息的用户对象的id 假设我想显示发送给特定用户的所有消息。在我看来,我最终写了这样的东西——我知道这很糟糕 <? $messages=Message::model()->findAllByAttributes

当使用外来ID将不同表中的数据链接在一起时,我通常会编写不雅观的代码来获取所需的信息。以下是一个例子:

假设我有一个带有以下字段的表消息:

id, touserId, fromuserId, title, message
touserId和fromuserId分别指发送和接收消息的用户对象的id

假设我想显示发送给特定用户的所有消息。在我看来,我最终写了这样的东西——我知道这很糟糕

<?
$messages=Message::model()->findAllByAttributes(array("touserId"=>Yii::app()->user->userid));
foreach ($messages as $message) {   
$fromuser=User::model()->findAllByAttributes(array("id"=>$message->fromId));
?>
<div>
<h4><?=$message->title;?></h4>
<p>From: <?=$fromuser->name'?>
<p><?$message->body;?></p>
</div>
<?
}
?>


从:在消息模型中,可以执行以下操作:

public function relations() {
    return array(
        'name' => array(self::HAS_ONE, 'User', 'fromuserId')
    )
}

或者,您可以修改您的模型以包含一个连接,这样您就可以获得用户名。

首先,我会将其移动到控制器中,并将数组从控制器传递到视图。您的模型是否不包含fromuser与fromuser名称的关系?我想我的意思是有一种方法可以执行类似$message->fromId->name的操作。Yii知道从另一个表中获取名称吗?您可以修改您的模型并添加关系:太好了。我会安排好的。但是没有办法轻松地连接链接模型的所有属性?本例中的用户。