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