好的,我的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'
),
我知道这只是我想要的抽象表达。
有人有个好主意,或者有人可以说我需要在哪里实现这样的功能?
感谢
答案 0 :(得分:3)
好的,如果我理解你的问题,那么你可以这样做。
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)'
),