CListView对来自另一个表的数据排序



我有一个存储角色信息的表。在这个表中,我有两个字段存储来自其他表的id。

表1:id, rname, pname, idtwo, idthree

表二:id, twoname 表三:id, threename

我的ClistView显示rname, pname, twoname, threename

在这个论坛的帮助下,我能够使用CListView并显示表2和表3中的名称。

我现在想要做的是能够创建一个视图,其中的信息是按twonname排序的,另一个视图中,数据是按threename排序的。

我的actionIndex是:

public function actionIndex() {
$dataProvider = new CActiveDataProvider('Staffroleprofile');
$this->render('index', array(
'dataProvider' => $dataProvider,
));
}

and my _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排序的数据。如何指定数据按表2或表3中的数据排序?

亲切的问候,

e25taki

如果model2model3分别是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的API页面

现在一切就绪,我需要的代码是:

$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模型获得记录的句柄,然后添加排序的标准,在本例中是基于关系的。谢谢大家的帮助。我的英语学习冒险又迈出了一小步。

干杯!

e25taki

相关内容

  • 没有找到相关文章

最新更新