Relacion Has_Many En Cgridview

buenas… he estado intentando resolver este problema.

tengo dos tablas relacionadas

USER —> USER_INFO_DATA

las relaciones son:

en USER


'institucion' => array(self::HAS_MANY,'UserInfoData','userid'),

en USER_INFO_DATA


'id_usuario' => array(self::BELONGS_TO,'User','userid'),

ahora en el GRID tengo


	array(

  		'name'=>'id',

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

		),

Data es el dato que quiero recuperar de la tabla relacionada pero no logro hacerlo

el mensaje de error es el siguiente:

Trying to get property of non-object

el valor ‘value’=>’$data->institucion->data’, indica que data es un atributo del model UserInfoData, pero user tiene varias UserInfoData (HAS_MANY), por lo que $data->institucion es un array y no un objeto por eso te marca el error. Deberias analizar que es lo que realmente quieres porque lo que intentas hacer no tiene sentido.

Gracias por responder, me ordenen en lo que quería y pude solucionarlo.

basicamente era mostrar en un cGridView los datos de otra tabla que se relacionaba en relacion de uno a muchos.

lo que hize es un metodo en el contralador




protected function gridInstitutionName($data,$row)

    {

      $sql = 'SELECT i.id, i.data FROM (mdl_user_info_data i JOIN mdl_user u ON i.userid = u.id) JOIN mdl_user_info_field f On i.id=f.id';

      $sql .= ' where u.id =' .$data->id; 

      $rows = Yii::app()->db->createCommand($sql)->queryAll();

 

      $result = '';

       if(!empty($rows))

        foreach ($rows as $row) 

           {

              $result .= CHtml::encode($row['data']); 

       }      

       return $result; 

    }



y en la vista




....

array(

		  'name'=>'institutionName',

		  'value'=>array($this,'gridInstitutionName'),

		),



y listo… pude dar con lo que necesitaba