我是yii的新手,我在CGridView中调用一个函数来显示列中的值。但我也无法为其他列获得该值。我正在调用相同的函数三次(TblPaid :: model() - > alreadyPaidUpto())。我想调用该函数一次并再次使用该值。这是CGridView列的摘录。有人可以吗。给我一个提示?
array('name'=>'Paid upto this Date',
'value'=>'number_format((TblPaid::model()->alreadyPaidUpto($data->id, $this->grid->extraparam)),2)','htmlOptions'=>array('style'=>'text-align: right'),
),
array('name'=>'Balance',
'value'=>'number_format($data->amount-(TblPaid::model()->alreadyPaidUpto($data->id, $this->grid->extraparam)),2)','htmlOptions'=>array('style'=>'text-align: right'),
),
array(
'header'=>'Running Balance',
'class'=>'RunningTotalColumn',
'value'=>'$data->amount-(TblPaid::model()->alreadyPaidUpto($data->id, $this->grid->extraparam))',
'htmlOptions'=>array('style'=>'text-align: right'),
),
答案 0 :(得分:0)
首先,看看你调用这种方法的方式,将它声明为static
方法可能更明智,例如:
public static function alreadyPaidUpto($arg1, $arg2) {}
但是例如你可以用$data
模型的方法(但我不知道这种情况,因为这里的代码不多)。例如public function isAlreadyPaidUpTo($date)
并使用它$data->isAlreadyPaidUpTo($when);
然后你可以在方法中缓存值:
public function isAlreadyPaidUpTo($date) {
static $result = null;
if ($result === null) {
$result = ? // query db, etc
}
return $result;
}
如果你展示了一些真实的代码,我可能会更有帮助。