Error Con Relaciones!.

Hola amigos que tal!.

Tengo Estas Tablas

Unidad_Metrica

cod_uni_metrica(pk)

nom_unidad_metrica

etc…

Materiales

cod_material(pk)

cod_uni_metrica(fk)

nombreMaterial

etc…

RegSalida

cod_sal(pk)

cod_material(fk)

etc…

En las relaciones de mis modelos tengo!

Unidad Metrica:

‘materiales’ => array(self::HAS_MANY, ‘Materiales’, ‘cod_uni_metrica’),

Materiales:

‘codUniMetrica’ => array(self::BELONGS_TO, ‘UnidadMetrica’, ‘cod_uni_metrica’),

‘regSalida’ => array(self::HAS_MANY, ‘RegSalida’, ‘cod_material’),

regSalida:

‘codMaterial’ => array(self::BELONGS_TO, ‘Materiales’, ‘cod_material’),

Supongo que aquí no tengo que hacer nada ya que las genero gii CRUD y aparentemente están correctas!

Ahora en mi Grid del RegSalida aparte de lo que va ahi quiero mostrar la unidad metrica del material!. y lo hago de esta manera:

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

'id'=&gt;'reg-salida-grid',


'dataProvider'=&gt;&#036;model-&gt;search(),


'filter'=&gt;&#036;model,


'columns'=&gt;array(


	'cod_sal',


	'f_salida',


	


	array('name'=&gt;'cod_material', 


    'value'=&gt;'&#036;data-&gt;codMaterial-&gt;cod_nom_material',


	'filter'=&gt;CHtml::listData(Materiales::model()-&gt;findAll(array('order' =&gt; 'cod_nom_material')),'cod_material','cod_nom_material'),


    ),    








	array( 


    [color=&quot;#FF0000&quot;]'value'=&gt;'&#036;data-&gt;codMaterial-&gt;codUniMetrica-&gt;nom_unidad_metrica',[/color]


	'filter'=&gt;CHtml::listData(Materiales::model()-&gt;findAll(array('order' =&gt; 'cod_nom_material')),'cod_material','cod_uni_metrica'),


    ),    





	array(


		'class'=&gt;'CButtonColumn',


	),


),

)); ?>

pero que va! no lo muestra! alguien podrían echar un vistazo a ver que creen que este haciendo mal?

no entiendo tu pregunta…

A primera impresión falta el atributo ‘name’=> en la segunda columna.

Me refiero a que tengo 3 tablas relacionadas! La tabla A con la B y la tabla B con la C! y en la vista de la tabla A necesito mostrar la info de la Tabla C ya que en la tabla B solo se esta guardando el ID de los o el registro en C que es la relación entre ellas ps!.

para mostrar lo de la tabla B en el view de la tabla A hago esto:

‘value’=>’$data->RelacionAyB->CampoAMostrarEnB’,

y para mostrar lo de la tabla C en el view de la A supongo que deberia hacer esto:

‘value’=>’$data->RelacionAyB->RelacionByC->CampoAMostrarEnC’,

pero no me funciona X-x! no se si me explico bien

Buenos días.

En principio parace estar bien. Te dá algún error? te muestra los datos en blanco? te muestra el id en lugar del nombre?

Y aquí:




array(

'value'=>'$data->codMaterial->codUniMetrica->nom_unidad_metrica',

'filter'=>CHtml::listData(Materiales::model()->findAll(array('order' => 'cod_nom_material')),'cod_material','cod_uni_metrica'),

)



Qué es ‘cod_nom_material’? este campo no existe en ninguna tabla.

Un saludo.

Gracias por tu respuesta! el error era que los campos de la relacion no pueden estar vacios tienen que contener algo!. eso me pasa a cada rato con las relaciones y caigo en cuenta despues!. jaja pero como lo plantie al principio esta bien!

Entonces acostúmbrate a utilizar isset, jeje.




'value'=>'isset($data->nombreCampo)?$data->nombreCampo:CHtml::encode("El campo está vacío")'



Un saludo.