PHP-Yii排序和过滤不适用于基于评级的列


PHP - Yii Sorting and filtering not working on rating based column

我有一个基于Yii的web应用程序,我在CGridView中显示文章信息。其中一个CGridView列显示每篇文章的总体评级为五星。(每篇文章由用户评分)

问题是,在显示文章的五星评级后,YII的内置排序和过滤被删除。要求是根据评级进行排序。我已经搜索过了,但无法找到如何修复它。感谢任何帮助或指导。我调用了一个函数来计算CGridView中的评级。

以下是CGridView代码。

<?php
    $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'customer-sites-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
    'id',
    'title',
    array('name'=>'author_id',  'value'=>'$data->author->name'),  
    array(
            "header" => "Rating",
            "type" => "raw",
            "value"=>function($data){
            $ratings=$data->ratingToString($data->id);
            return '<div class="star-rating"    
                  id="rating1result'.$ratings['roundedrating'].'"   
         style="background-position:0 -'.$ratings['roundedrating2'].'px; float:left;">
                <div class="star"></div>
                <div class="star"></div>
                <div class="star"></div>
                <div class="star"></div>
                <div class="star"></div></div>';
            },
        ),
    array(
        'class'=>'CButtonColumn',
    ),
 ),
 ));  ?>

-----编辑---------------

ArticleRating.php

     return array(
        'article' => array(self::BELONGS_TO, 'Article', 'article_id'),
 );

Article.php

    return array(
      'articleRating' => array(self::HAS_MANY, 'ArticleRating', 'article_id'),
   );

假设rating是表中的一个字段,添加以下内容即可:

array(
    'header'=>'Rating',
    'type'=>'raw',
    'value'=>function($data) {...},
    'name'=>'rating', //this is the important part!
),