mmigue_mt
(Mmartinezt7)
March 20, 2014, 2:10pm
1
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
a18327
(A18327)
March 20, 2014, 4:33pm
2
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.
mmigue_mt
(Mmartinezt7)
March 27, 2014, 7:00pm
3
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