Error 500 En Cgridview

Tengo 2 tablas relacionadas una llamada solicitantes y otra llamada solicitudes, quiero que en el CGridView de las solicitudes me muestre cedula, nombre y apellido del solicitante, pero el problema viene cuando los relaciono en la function Search() del modelo, porque en el CGridView tengo que poner el name=>solicitantes_id tanto a cedula, nombre y apellido porque esa es su relación pero me empieza a arrojar error 500 cuando busco en el filtro

Codigo del CGridView:




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

	'id'=>'solicitudes-social-grid',

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

	'filter'=>$model,

	'columns'=>array(

		array ('header'=>Yii::t('app','Number'),'name'=>'id','value'=>'$data->id','type'=>'text'),

		array ('header'=>Yii::t('app','IdentificationCard'),'name'=>'solicitantes_id','value'=>'$data->solicitantes->cedula','type'=>'text'),

		array ('header'=>Yii::t('app','Name'),'name'=>'solicitantes_id','value'=>'$data->solicitantes->nombre','type'=>'text'),

		array ('header'=>Yii::t('app','LastName'),'name'=>'solicitantes_id','value'=>'$data->solicitantes->apellido','type'=>'text'),

		array ('header'=>Yii::t('app','Type'),'name'=>'tipo_solicitudes_id','value'=>'$data->tipo_solicitudes->nombre','type'=>'text'),

		array ('header'=>Yii::t('app','Date'),'name'=>'fecha','value'=>'$data->fecha','type'=>'text'),

		array ('header'=>Yii::t('app','Description'),'name'=>'descripcion','value'=>'$data->descripcion','type'=>'text'),

		array ('header'=>Yii::t('app','Status'),'name'=>'estatus','value'=>'SolicitudesSocial::model()->getStatus($data->id)','type'=>'text')



Codigo de la function Search() del modelo:




public function search()

	{

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


		$criteria=new CDbCriteria;


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

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

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

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

		$criteria->with = array('solicitantes');

		$criteria->addSearchCondition('LOWER(solicitantes.cedula)', strtolower((string)$this->cedula));

		$criteria->addSearchCondition('LOWER(solicitantes.nombre)',sstrtolower((string)$this->cedula));

		$criteria->addSearchCondition('LOWER(solicitantes.apellido)', strtolower((string)$this->apellido));

		$criteria->with = array('tipo_solicitudes');

		$criteria->addSearchCondition('LOWER(tipo_solicitudes.nombre)', strtolower((string)$this->tipo_solicitudes_id), true);

		$_SESSION['datos_filtrados'] = new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			'pagination'=>false,

		));

		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			'pagination'=>false,

		));

	}



Buenas.

El name no tiene que ser solicitante_id para todos. De hecho podrías utilizar label en luhar de name.

Y además creo q tu función search no estás definiendo bien la propiedad with.

Tienes 2 asignaciones de with, una para "solicitantes" y otra para "tipo_solicitudes", entonces cuando crees el data provider sólo te reconocerá la segunda, con lo que te dará un error ya que no encuentra la tabla solicitantes. Debería ser:

[code

$criteria->with = array(‘solicitantes’, ‘tipos_solicitud’);

[/code]

Y para que metes en una variable SESSION un data provider???!!!

Un saludo.