我的视图文件中包含以下代码:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
array(
'name' => 'Name',
'type'=>'raw',
'value' => 'CHtml::link(CHtml::encode($data->profile->first_name." ".$data->profile->last_name),array("match/view","id"=>$data->id))',
),
array(
'name' => 'Similiarity Score',
'type'=>'raw',
'value' => array($this, 'calculateScore'),
),
),
)); ?>
您会注意到第二列在控制器文件中调用函数calculateScore($ data,$ row)。无论如何我可以根据这些分数对表格进行排序吗?
答案 0 :(得分:1)
我认为您的结果来自数据库,而您使用CActiveDataProvider
或CSqlDataProvider
。在这种情况下,您必须以某种方式将calculateScore
的逻辑移动到数据库查询中。您可以向模型类添加公共属性score
,并将其添加到select
的{{1}}属性中:
CDbCriteria
然后,您可以按$criteria->select = array('*', '... SQL FOR SCORE CALC HERE ... AS score');
的{{1}}定义score
排序:
sort