Cgridview E Totali: Come Side-Effect Ho Un Problema Con L'ordinamento

Solite tre tabelle: Groups 1 -> N Users 1 -> N Report

Nell’admin dei Report ho una CGridView va a meraviglia, compresi i filtri tramite combo e l’ordinamento sul campo Group.name.

Ora sto lavorando per avere nel footer i totali.

Ho seguito questo topic inglese: http://www.yiiframework.com/forum/index.php?/topic/9636-cgridview-totals-or-summary-row

Praticamente ho creato una getSearchCriteria, che non fa altro che fare quello che faceva la search, mandando in return i CDbCriteria.

E così ancora tutto va





	public function getSearchCriteria()

	{

		$criteria=new CDbCriteria;


		$criteria->with = array ('user.group');

		$criteria->compare('id',$this->id);

		...

                $criteria->compare('user.groupId',$this->groupI);	

		return $criteria;

	}  






	public function search()

	{

		

		$criteria = $this->getSearchCriteria();

		$sort = new CSort();

		......

                ....

		

		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			'sort'=> $sort,

			'pagination' => array (

					'pageSize' => '20',

			),

						

		));

	}

	




anche così tutto funziona a meraviglia, e mi sembra anche più in ordine il codice

Ora vado nella view admin di Report e modifico UNA SOLA COLONNA della cgridview




array (

  'name' => 'workOne',

  'footer' => $model->sum('workOne'),			

),



faccio refresh della admin e va tutto bene, il totale si vede, anche se la formattazione fa schifo e mi aspettavo che il widget facesse una riga di totali più belli,

Provo a filtrare per user.groupIp ed ottengo un sacrosanto errore SQL dovuto al fatto che la funzione di somma ora cerca di fare quanto segue:




SELECT SUM(workOne) FROM `tbl_reports` `t` WHERE users.groupId=:ycp1 



La funzione di somma l’ho fatta così, anche se ovviamente essendo un copia/incolla non l’ho ben capito, ma ho ben capito l’errore SQL.




public function sum($nomeColonna)

	{

		$criteria=$this->getSearchCriteria();

		$criteria->select= "SUM($nomeColonna)";

		return $this->commandBuilder->createFindCommand($this->getTableSchema(),$criteria)->queryScalar();

	} 



Come mai i criteria, che usano il with (‘user.group’ ), non vengono considerati durante la funzione di somma ?

Come aggirare l’ostacolo ?