Yii - GridView中的评级百分比

时间:2014-01-25 13:44:42

标签: php twitter-bootstrap gridview yii

所以,由于BootProgressColumn,我终于在GridView中有了一个进度条。但是,我有一个评级系统,我想在进度条中显示百分比。我可以在columns数组中设置它,但这将适用于所有行。

$rawData = Item::model()->findAllByAttributes(array('special_id' => $specialId));
$dataProvider = new CArrayDataProvider($rawData, array());

GridView:

'dataProvider' => $dataProvider,
'columns' => array(
 array(
  'class' => 'application.components.BootProgressColumn',
  'name' => 'Rating',
  'animated' => true,
  'striped' => true,
  'percent' => '44',
 ),
)

现在,如何获取$data->id模型中每个Rating匹配行的所有列的总和?

$countRatings = count(Rating::model()->findAllByAttributes(array('item_id' => $data->id));

但总结怎么办?如何按计数划分总和?这一切都已经完成,如何在每一栏中获得它?或者最好自己创建一个表?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想获得每件商品的平均价格,这就是你能做的:

项目模型中的

创建关系avgRating:

public function relations()
{
    return array(
        'avgRating' => array(self::STAT, 'Item', 'item_id', 'group' => 'item_id', 'select' => 'ROUND(AVG(rate),1)'),
    );
}

然后您可以为每个项目调用此项以获得表格中的评分:

'dataProvider' => $dataProvider,
   'columns' => array(
    array(
      'class' => 'application.components.BootProgressColumn',
      'name' => 'Rating',
      'animated' => true,
      'striped' => true,
      'percent' => '$data->avgRating',
    ),
)