在yii CGridView中调用函数

在yii CGridView中调用函数,yii,Yii,我是yii的新手,我正在调用CGridView中的函数来显示列中的值。但我也无法为其他列获取该值。我三次调用同一个函数TblPaid::model->alreadyPaidUpto。我想调用函数一次,然后再次使用该值。这是CGridView列的摘录。有人能给我一个提示吗 array('name'=>'Paid upto this Date', 'value'=>'number_format((TblPaid::model()->a

我是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'),
            ),

首先,看看您调用此方法的方式,将其声明为静态方法可能更明智,例如:

public static function alreadyPaidUpto($arg1, $arg2) {}
但举例来说,你可以用$data模型的方法来实现,但我不知道是什么情况,因为这里没有太多的代码。例如,公共函数isAlreadyPaidUpTo$date,并像这样使用它$data->isAlreadyPaidUpTo$when

然后可以在方法中缓存该值:

public function isAlreadyPaidUpTo($date) {
    static $result = null;
    if ($result === null) {
        $result = ? // query db, etc
    }

    return $result;
}
如果您展示一些真实的代码,我可能会更有帮助。

您是否尝试过alreadyPaidUpto的结果?这个例子在JS中展示了这个想法,你当然可以在PHP中使用相同的概念。