在我的度假模式疫苗 I有这个功能
public function getVacCount(){
这个函数返回多少天有一个假期。
我想自定义列添加到这样的cgridview:
<?php
$this->widget('zii.widgets.grid.CGridView', array(
...
array(
'name' => 'count',
'value' => '$data->getVacPeriod()'
),
...
),
));
?>
它工作正常。 但我不知道我怎么可以排序在这个自定义属性。 我试图用CSort,但它不工作。 任何想法?
要使用CSort进行排序,你需要你的假期函数转换成SQL查询,然后藏匿导致公共变量模型。
CSort只能用SQL语句/函数的工作,因为它的下面是一个使用ORDER BY来完成所有的排序。
更多信息(和演示代码)可以在这里
下面是我如何做它在我的网站的样本:
$criteria->select = array(
"*",
new CDbExpression("IF(survey.RequestDate, survey.RequestDate, SurveyCompleteDate) AS SurveyDate")
);
这就让我做这个类型的过滤器:
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
'sort'=>array(
'attributes'=>array(
'SurveyDate' => array(
'asc' => 'SurveyDate',
'desc' => 'SurveyDate DESC',
),
'*',
),
),
);
注意:您还需要在你的模型认为你正在做的CDbExpression的结果来定义公共变量。 矿被称为SurveyDate。