我有一个包含2个表的简单数据库:tbl_code和tbl_user
**tbl_code**
id(PK)
accesscode
createdby(FK references tbl_user.id)
accesstime
**tbl_user**
id (PK)
username
password
我想在listview中显示以下内容
电流控制器:
$dataProvider=new CActiveDataProvider('Code');
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
索引视图
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
最后_view
<div class="view">
<b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
<?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('accesscode')); ?>:</b>
<?php echo CHtml::encode($data->accesscode); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('createdby')); ?>:</b>
<?php echo CHtml::encode($data->createdby); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('accesstime')); ?>:</b>
<?php echo CHtml::encode($data->accesstime); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('messagecount')); ?>:</b>
<?php echo CHtml::encode($data->messagecount); ?>
<br />
</div>
我应该在$ dataprovider标准中加入这两个表,还是有更好的方法来实现这一目标? 仍然掌握Yii,任何帮助将不胜感激。
答案 0 :(得分:0)
您可能会在代码中错过很多想法,因此我会展示您需要的一些内容:
在模型中
在模型中,您需要指出存在的关系。
在User
中,您需要定义将此模型与代码
public function relations(){
return array(
'codes'=>array(self::HAS_MANY, 'Code', 'createdby'),
);
}
在Code
你会有
public function relations(){
return array(
'author'=>array(self::BELONGS_TO, 'User', 'createdby'),
);
}
现在可以在控制器或视图中调用模型时链接模型
数据提供商
在数据提供程序中,我们将指出在加载代码时需要加载的相关模型:
$dataProvider=new CActiveDataProvider('Code', array(
'criteria'=>array(
'with'=>array('author'),
),
));
视图
现在在视图中你可以显示作者:
<?php echo CHtml::encode($data->author->getAttributeLabel('username')); ?>:</b>
<?php echo CHtml::encode($data->author->username); ?>