Yii计算模型值

时间:2014-02-28 16:41:26

标签: php yii

好的,我的Yii型号有问题。我在表格“besuch”和“note”之间有1:m的关系。

注意:

id_note    note    wertung    besuch_id 
   1        4        0.5         1
   2        5         1          1
   3        4.5       2          1

besuch:

id_besuch   user_id   fach_id    ...
    1          1         1

现在我想创建一个“besuch”的网格视图。在此gridview中,一列应为“平均”。这个平均值计算如下:

average = all(note.note * note.wertung) / Sum(note.wertung) 

where id_besuch = besuch_id

示例:

average = (4 * 0.5 + 5 * 1 + 4.5 * 2) / 0.5 + 1 + 2 = 
16 / 3.5 = 
4.571...

现在我想将这个函数实现到我的gridView中:

array(
    'name' => 'average',
    'value' => '$data->average'
),

我知道这只是我想要的抽象表达。

有人有个好主意,或者有人可以说我需要在哪里实现这样的功能?

感谢

1 个答案:

答案 0 :(得分:3)

好的,如果我理解你的问题,那么你可以这样做。

  1. 首先在模型中创建一个类似
  2. 的功能
    public function calculateAverage($id)
    {
        $numerator=0;
        $denominator=0;
        $notes=Note::model()->findAllByAttributes(array('besuch_id'=>$id));
        foreach($notes as $note)
        {
            $numerator=$numerator+($note->note*$note->wertung);
            $denominator=$denominator+$note->note;
        }
        $result=$numerator/$denominator;
        return $result;
    }
    

    现在在您的网格中,您可以将其作为

    array(
        'header' => 'Average',
        'value' => '$data->calculateAverage($data->id)'
    ),