0

外部 ID を使用して異なるテーブルのデータをリンクする場合、必要な情報を取得するために洗練されていないコードを記述してしまうことがよくあります。次に例を示します。

次のフィールドを持つテーブル Message があるとします。

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>
<?
}
?>

関連するレコード (この場合、メッセージを送信したユーザーの名前) から情報にアクセスするためのより洗練された方法はありますか?

4

1 に答える 1

1

メッセージモデルでは、次のことができます。

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

または、モデルを変更してJOINを含め、ユーザー名を取得することもできます。

于 2012-08-30T16:33:22.247 に答える