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

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 830
  • Joined: 03-October 12
  • Location:Ferrara

Posted 14 October 2012 - 09:42 AM

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.yiiframew...-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 ?
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users