Filter On Virtual Field

my model:




 */

class ScoreRecord extends CActiveRecord

{

	

	public $duration;

	public $start;

	public $visit;

	public $sumamount;

        public $numberofcall;

	

	/**

	 * @return string the associated database table name

	 */

	

	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

		'cdr1' => array(self::BELONGS_TO, 'CoreCdr', 'cdr_id'),

		'types' => array(self::BELONGS_TO, 'ScoreType', 'type_id'),

		'services1' => array(self::BELONGS_TO, 'CoreService', 'service_id'),

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	








		public function search2()

		{

		// @todo Please modify the following code to remove attributes that should not be searched.


		$criteria=new CDbCriteria;

		

		$criteria->with = array('cdr1.user','types','services1','cdr1');

		$criteria->select='SUM(amount) AS sumamount , COUNT(user.clid) AS numberofcall ';

		$criteria->condition='t.service_id = 31 and t.type_id <> 3';

		$criteria->group='user.clid';


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


		$criteria->compare('user.clid',$this->cdr_id,true);

		$criteria->compare('t.service_id',$this->service_id);

		// $criteria->compare('amount',$this->amount,true);

		$criteria->compare('cdr1.duration',$this->duration,true);

		$criteria->compare('cdr1.visit',$this->visit,true);





		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			 'pagination'=>array(

                                'pageSize'=> Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']),

                        ),


		));

	}









and my view :







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

	'id'=>'score-record-grid',

	'dataProvider'=>$model->search2(),

	'filter'=>$model,




	'columns'=>array(


	array('header'=>Yii::t('fieldName','ID'),

          'class'=>'IndexColumn',


 ),


		

		array(

			'name'=>'visit',

			'value'=>'$data->cdr1->visit',

			'filter'=> CHtml::activeTextField($model, 'visit')

		),

		

		array(

			'name'=>'amount',

			'value'=>'$data->sumamount',

			'filter'=> CHtml::activeTextField($model, 'amount')

		),




	array(

			'name'=>'numberofcall',

			'value'=>'$data->numberofcall',

			'filter'=> CHtml::activeTextField($model, 'numberofcall')

		),




		array(

			'class'=>'CButtonColumn',

			'template'=>'',

			    'header'=>CHtml::dropDownList('pageSize',$pageSize,array(10=>10,20=>20,50=>50,100=>100),array(

                                  'onchange'=>"$.fn.yiiGridView.update('score-record-grid',{ data:{pageSize: $(this).val() }})",

                    ))

		),

		

		

	),

));

now, i want that 1 filter on "numberofcall" & "amount" fileds.

thanks

Hi n-r,

The following wiki may not fit your needs exactly, but I hope you’ll get some hints from it.

http://www.yiiframework.com/wiki/319/searching-and-sorting-by-count-of-related-items-in-cgridview