Php Yii2网格:按计算数值或公式列排序

Php Yii2网格:按计算数值或公式列排序,php,gridview,yii2,Php,Gridview,Yii2,我将GridView(由Gii生成)与ActiveRecord一起使用。假设我有一个表,其列名为“number”。我在模型中添加了一个函数,如下所示: public function getCos() { return cos($this->number); } 'the_cosine' => [ 'asc' => 'COS(number) ASC', 'desc' => 'COS(number) DESC', ] 我看不出应该如何对像这样的列进行排序

我将GridView(由Gii生成)与ActiveRecord一起使用。假设我有一个表,其列名为“number”。我在模型中添加了一个函数,如下所示:

public function getCos()
{
return cos($this->number);
}
'the_cosine' => [
    'asc' => 'COS(number) ASC',
    'desc' => 'COS(number) DESC',
]
我看不出应该如何对像这样的列进行排序,这些列的数值计算值不仅仅是两列的串联,就像这里描述的情况:

可以在视图而不是模型中计算值:

'value'=>function($model, $key, $index, $widget){return cos($model->number);
但问题是一样的,我不知道如何对此类列进行排序


谢谢。

按照您提到的指南进行操作,但在数据提供程序的排序中添加如下属性:

public function getCos()
{
return cos($this->number);
}
'the_cosine' => [
    'asc' => 'COS(number) ASC',
    'desc' => 'COS(number) DESC',
]
这允许您在数据库级别进行排序