[Resuelto] Mostrar Total De Registros De Un Modelo En Un Cgridview

Hola, tengo un CGridView que muestra los detalles de un modelo determinado, y en una columna debe mostrar el total de otro modelo. El tema es que no sé cómo pasarle al método que retorna el contador el id del evento.

En la vista tengo esto:


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

	'id'=>'evento-grid',

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

	'filter'=>$model,

	'columns'=>array(

		'id',

		'nombre',

		array(

			'header'=>'Total Inscritos',

			'value'=>Inscripcion::model()->count( 'id_evento=:eid', array(':eid' => $model->id))

		),

	),

));

El problema está en $model->id (está vacío). Si reemplazo $model->id por un ID fijo, retorna los resultado.

¿Cómo lo podría hacer? Cualquier pista se agradece :)

[size="4"]Resuelto![/size]

Lo resolví reemplazando:


array(

	'header'=>'Total Inscritos',

	'value'=>Inscripcion::model()->count( 'id_evento=:eid', array(':eid' => $model->id))

)

por


array(

	'header'=>'Total Inscritos',

	'value'=>'Inscripcion::model()->count( "id_evento=:eid", array(":eid" =>$data->id))'

)

En CGridView los valores desplegados no provienen de $model, sino de $data porque las columnas vienen de un CActiveDataProvider (fíjate en la función search() del modelo) y no del modelo directamente. Es por eso que $model->id está vacío.

Te sugiero que añadas una función "totalInscritos($evento)" al modelo Inscripcion que reciba como parámetro el id_evento y devuelva el número de los inscritos. El modelo Inscripcion también debe estar relacionado con el modelo Evento. De esta manera puedes hacer lo siguiente:




'columns'=>array(

    'id',

    'nombre',

     array(

         'header'=>'Total Inscritos',

         'value'=>'$data->inscripcion->totalInscritos($data->id)',

     ),

),



Si, exactamente como señalas, los valores vienen de $data y no de $model. Realicé algunas pruebas y me funcionó :lol:

Muchas gracias por la ayuda!

Me alegra que hayas resuelto el problema, estoy a las órdenes en lo que pueda. :)