CGridView中的一个字段是"quota"字段,其值以字节为单位。为了让它变得可读,我使用了CFormatter:
'columns' => array(
...
array(
'name' => 'quota',
'value' => function($data) {
return Yii::app()->format->formatSize($data->quota);
},
),
),
现在,我想按兆字节过滤这一列中的数据。我修改了模型中的search()方法,如下所示:
$criteria->compare('(quota / 1024 / 1024)',$this->quota,true);
但我不喜欢它的样子。有正常的解决方法吗?非常感谢。
而不是
array(
'name' => 'quota',
'value' => function($data) {
return Yii::app()->format->formatSize($data->quota);
},
),
你可以简单地做:
'quota:size',
现在,为了回答您的问题,使用compare函数是错误的,因为它在SQL查询中添加了一个"WHERE"子句。您希望使用order
属性进行排序:
$criteria = new CDbCriteria;
$criteria->order = "quota DESC";
编辑(评论后):
$criteria = new CDbCriteria;
$criteria->addCondition('quota > '.intval($this->quota)*1024*1024);