当使用外部ID将不同表中的数据链接在一起时,我经常最终编写不雅的代码来获取我需要的信息。这是一个例子:
说我有一个表消息,包含以下字段:
id, touserId, fromuserId, title, message
touserId和fromuserId分别指向发送和接收消息的User对象的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>
<?
}
?>
是否有更优雅的方式来访问相关记录中的信息(在这种情况下是发送邮件的用户的名称?)
答案 0 :(得分:1)
在Message模型中,您可以执行以下操作:
public function relations() {
return array(
'name' => array(self::HAS_ONE, 'User', 'fromuserId')
)
}
或者,您可以修改模型以包含JOIN,以便获取用户名。