1

我是 yii 的新手,我在 CGridView 中调用一个函数来显示列中的值。但是我也无法为其他列获得该值。我三次调用相同的函数(TblPaid::model()->alreadyPaidUpto())。我想调用一次函数并再次使用该值。这是 CGridView Columns 的摘录。有人可以请。给我一个提示?

            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'),
            ),
4

1 回答 1

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;
}

如果您显示一些真实的代码,我可能会更有帮助。

于 2012-09-21T11:46:15.903 回答