我有一个存储角色信息的表。在该表中,我有两个字段存储来自其他表的ID。
表一:id,rname,pname,idtwo,idthree
表二:id,twoname
表三:id,threename
我的ClistView显示rname,pname,twoname,threename
通过这个论坛帮助,我可以使用CListView并显示表2和表3中的名称。
我现在要做的是创建一个视图,其中信息按twoname排序,另一个视图,数据在threename上排序。
我的actionIndex是:
public function actionIndex() {
$dataProvider = new CActiveDataProvider('Staffroleprofile');
$this->render('index', array(
'dataProvider' => $dataProvider,
));
}
和我的_view.php是:
<h1>List of SRP's</h1>
<?php
$dataProvider->sort->defaultOrder='rname ASC';
?>
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
所以上面给出了从表1中的rname排序的数据。我如何指定我希望数据按表二或三中的数据排序?
亲切的问候,
e25taki
答案 0 :(得分:0)
如果model2
和model3
分别是Staffroleprofile
中表2和3的关系,请将其添加到您的代码中
$dataProvider = new CActiveDataProvider('Staffroleprofile');
$criteria=new CDbCriteria;
$criteria->together=true;
$criteria->with=array('model2','model3');
$dataProvider->criteria=$criteria;
$dataProvider->sort->defaultOrder='model2.twoname ASC';
CDbCriteria::together
指定是否应使用连接运行查询。如果设置为false,则在需要关系时为每条记录运行其他查询。有关更多详细信息,请转到CDbCriteria和CActiveDataProvider
答案 1 :(得分:0)
现在一切都很好,我要求的代码是:
$dataProvider = new CActiveDataProvider('Staffroleprofile');
$criteria=new CDbCriteria;
$criteria->together=true;
$criteria->with=array('sitename','businessname');
$dataProvider->criteria=$criteria;
$dataProvider->sort->defaultOrder='sitename.site ASC';
$this->render('index_bysite', array(
'dataProvider' => $dataProvider,
));
因此,您可以获得来自Staffrleprofile模型的记录,然后添加排序条件,在这种情况下,它基于关系。 谢谢大家的帮助。我的Yii学习冒险中的另一个小步骤。
干杯!
e25taki