CGridView中的一个字段是'配额'字节值的字段。为了使它具有人类可读性,我使用了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);
但我不喜欢它的样子。有正常的解决方法吗? 谢谢。
答案 0 :(得分:1)
而不是
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);