Footer con suma de valores de una columna relacionada

Buenos días, mi consulta es la siguiente

tengo esta función en el modelo


public function getTotal($records, $column)

    {

        $total = 0;

            foreach ($records as $record) {

                $total += $record->$column;

            }

        return $total;

    }

la cual llamo en el footer de la columna respectiva del cgrid del admin de la siguiente manera


	

 'columns' => array(

...

array(

			   'name'=>'cantidad_devoluciones',

			   'header' =>'Devo.',

			   'filter' => false,

			   'headerHtmlOptions'=>array('style'=>'width: 30px'),

			   'footer'=>$model->getTotal($model->search()->getData(), 'cantidad_devoluciones'),

			  ),


....


}

y funciona bien cuando hace la suma de una columna del mismo modelo, pero no se como hacerlo para que me sume una columna de un modelo relacionado por ejemplo:





array(

			   'name'=>'codigoAcuseRecibo.cantidad_cartas',

			   'header' =>'Cartas',

			   'headerHtmlOptions'=>array('style'=>'width: 30px'),

                           'footer'=>$model->getTotal($model->search()->getData(), 'codigoAcuseRecibo.cantidad_cartas'),

			  ),



al hacer eso me da error de que "codigoAcuseRecibo.cantidad_cartas no se encuentra definida"

lo mismo pasa cuando tengo una columna "personalizada" que es la multiplicación de 2 columnas a través de una función


public function getPago()

	{

			$cantidad = RegistroAcuse::model()->findByPK($this->codigo_acuse_recibo);

	        return "$ ".number_format(($cantidad->cantidad_cartas*$this->codigoAcuseRecibo->idSector->idTipoSector->precio_por_carta),0,'','.');

	}

y luego en el cgrid


array(

			   'name'=>'Pago',

			   'header' =>'Total',

			   'filter' => false,

			   'htmlOptions'=>array('style'=>'text-align: center'),

			   'headerHtmlOptions'=>array('style'=>'width: 30px'),

			   'footer'=>$model->getTotal($model->search()->getData(), 'Pago'),

			  ),

De antemano gracias si alguien puede ayudarme

¿es yii 1 o yii 2? en yii 2 yo haría algo así:


'footer'     => function ($searchModel) {

                    return $searchModel->getTotal($searchModel, 'pago');

                },

Buenas.

Suponiendo que hablas de Yii 1.x.

Comentar que nunca utilicé así las columnas de un GridView, siempre separé el name del value.

Ten en cuenta que un GridView lleva relacionado un modelo, no los modelos relacionados con este, aunque sí puedas acceder a sus datos.

En tu función getTotal estás recorriendo los atributos del modelo "padre", no los de los modelos relacionados, por eso te dice que no existe la columna (pq realmente no existe).

Una idea sería tener crear una función getCartas en tu modelo inicial, y pasar esos registros a la función getTotal.

En el modelo:




public function getCartas($records)

{

     // Aquí construyes un array con los modelos cartas relacionados con los modelos

     // que están dentro de $records.

}



En el GridView:




//...

'footer'=>$model->getTotal($model->getCartas($model->search()->getData()), 'cantidad_cartas'),

//...



Un saludo.