CGridView - problem with SUM in footer


I hope you help me with this issue:) So, I have a little problem with sum in cgridview.

I have models:

  1. Works(id(PK), title, hours, employee_id);


  'WorksSettlement' => array(self::HAS_ONE, 'Works_Settlement','works_id' ),

  'ValueSum' => array(self::STAT, 'Works_Settlement', 'works_id', 'select'=> 'value'),  

  1. Works_Settlement(works_id(PK), value);

Value is calculated in afterSave function when Works model save. Value = hours*rate (rate is stored in other model).

  1. Settlement_Employee (id(PK), title, employee_id)


  'SettlementDetails' => array(self::HAS_MANY, 'Settlement_Details', 'settlement_id'),

  1. Settlement_Details(settlement_id(PK), works_id(PK))


			'SettlementEmployee' => array(self::BELONGS_TO, 'Settlement_Employee', 'id'),

			'Work' => array(self::BELONGS_TO, 'Works', 'id')


In Settlement_Employee model I created View action in Controller, which display related works, for given settlement.

	public function actionView($id)


            $Criteria = new CDbCriteria();

            $Criteria->condition = 'settlement_id=:settlement_id';

            $Criteria->params = array(':settlement_id'=>$id);


            $datagrid = new CActiveDataProvider('Settlement_Details', array('criteria'=>$Criteria));          






Next i created View for this action, which display cdetailview and cgridview (Display SettlementEmployee with related works):

	//display settlement

	<?php $this->widget('zii.widgets.CDetailView',array(  





)); ?>

//display related works for settlement

<?php $this->widget('zii.widgets.CGridView',array(       

        'dataProvider' =>$datagrid,










)); ?>

Everything works fine, but i need to display sum of this column in CGridView: Work.WorksSettlement.value. How can i do that? Can anyone help me, please? :)

Many thanks for your help:)

Sorry for my english:)



P.S.: I know, that I can display sum of "value" column in CGridView for "Works" model in that way: I created in my "Works" model function:

        public function getTotal($records, $column)


                $total = 0;

                foreach ($records as $record) {

                        $total += $record->$column;


                return number_format($total,2);


and I know, that in my CGridView for "Works" model i can use:



                    'footer'=>'Sum: ' . $model->getTotal($model->search()->getData(), 'ValueSum'),                    


But… if I try use this function for Settlement_Employee CGridView, it doesn’t work:(

This should work:

<?php $this->widget(‘zii.widgets.CGridView’,array(

    'dataProvider' =&gt;&#036;datagrid,





                    'header' =&gt; 'SUM'                           

                    'value' =&gt;'&#036;data-&gt;Work-&gt;WorksSettlement-&gt;sum',                                  







)); ?>

and in WorkSettlement make method:

public function getSum()


… do your math here…

… like for getTotal() in Works…