Yii Active Records - передача массива и получение связанных полей// with AR - передача во views
Primary tabs
пусть мы имеем описание message (связь с таблицей User) =
public function relations() // задаём отношения с другими классами (User)
{
return array(
'user' => array(self::BELONGS_TO, 'User', 'user_id')
);
}пусть мы извлекаем в дейсвие данные так чтобы кроме сообщений получить и имена пользователей (то есть происходит связывание таблиц средствами Active Record) =
public function actionMessageList()
{
//SomeActiveRecord::model()->findAll(array('order'=>'somefieldfield'));
//далее сортировка по дате в обратном порядке (новые выше)
// при этом $msgs->user будет хранить объект user, поля которого
// будут соответствовать полям записи в БД для пользователя оставившего
// данное (конкретное из массива) сообщение
$msgs = Message::model()->with('user')->findAll(array('order'=>'date DESC'));
$this->render('messagelist',array('msgs'=>$msgs));
// var_dump($m);
}
так как объект user теперь хранится в поле каждого элемента массива $msgs, то обратиться к данным можно например так(пример представления):
<h2>Список сообщений </h2>
<?php echo CHtml::link('На главную', array('site/index')); ?>
<table>
<tr>
<td>Имя пользователя</td>
<td>Номер сообщения</td>
<td>Текст сообщения</td>
</tr>
<?php foreach ($msgs as $msg): ?>
<tr>
<td><?php echo $msg->user->username; ?> </td>
<td> <?php echo $msg->id; ?> </td>
<td> <?php echo $msg->text; ?></td>
</tr>
<?php endforeach; ?>
</table>
- Log in to post comments
- 3251 reads