Problema Con Las Vistas

Hola necesito saber como puedo mostrar en una vista los datos de distintas tablas de mi base de datos.Por ejemplo tengo dos tablas una tabla es la de Usuarios y la otra es de Comentarios,el caso es que necesito mostrar en los comoentarios por ejemplo la foto del que hizo el comentario.La relacion de usuarios con comentarios es de uno a muchos.Gracias de ante mano.

Deberías explicarlo un poco más detalladamente y copiando código de los models… ¿Tienes creado el relation en los modelos? Si es así, tienes bastante trabajo hecho.

Deberías intentar algo así (a bote pronto, no lo he probado):

En el modelo de Usuarios:


 public function relations()

    {

        return array(

            'comentarios_'=>array(self::HAS_MANY, 'Comentarios', 'user_id'),

        );

    }

En el model Comentarios:


public function relations()

    {

        return array(

            'usuario_'=>array(self::BELONGS_TO, 'Usuarios', 'user_id'),

        );

    }



Para mostrar la imagen en un _view de Comentarios:


$model->usuario_->foto

Hola muchas gracias de antemano, ya las relaciones en los modelos ya las tenia hecha como te mostraré aquí:

en el modelo de Comentarios




return array(

        'usuarios'=>array(self::BELONGS_TO, 'Usuario', 'usuario_idusuario'),

	);



en el de usuarios




return array(

        'comentarios'=>array(self::HAS_MANY,'Comentario','usuario_idusuario'),

	);



en el detailview del view.php me funciona bien donde me de error es en el _view.php y lo que me sucede es que a la hora de mostrar en el _view de comentarios me dice que la variable $model es indefinida y cuando intento mostralo con $data tambien me dá error.Gracias otra vez.

Hola dj_lethal:

En _view,la utilizacion de $data no deberia dar problemas, por favor, muestra el codigo que utilizas

Miguel

Recursos Formacion

Asi es como estoy utilizando el data:




<b><?php echo CHtml::encode($data->getAttributeLabel('usuario_idusuario')); ?>:</b>

	<?php echo CHtml::encode($data->usuarios->nombre);?>

	<br />

<b><?php echo CHtml::encode($data->getAttributeLabel('usuario_idusuario')); ?>:</b>

	<?php echo CHtml::encode($data->usuarios->foto);?>

	<br />



ya el código de las relaciones lo puse arriba,y así es como intento mostrar el nombre del usuario y la foto del que realizó el comentario.Esto es solo lo que he intentado modificar por ahora del código que te genera yii.Gracias si necesitas otras partes del código dimelo y te las muestro.

Supongo que el resto de informacion esta funcionando, p.ej. $data->lo-que-sea, que el view es de Comentarios, y que la columna nombre y fotos, existe en la tabla usuarios…

Si todo es correcto, falta que nos digas que error te esta dando.

Hola gracias otra vez,los campos nombre y foto si existen en la tabla de usuario y este es el error que me está enviado con el $data:Trying to get property of non-object.Será que la relación de comentarios con usuario no estará bien?Revisaré de nuevo ahi a ver.

Este error, lo acostumbra a dar tambien cuando no encuentra el registro correspondiente. Comprueba que exista el usuario.

Hola, en tu tabla del model Usuario el campo se llama [color=#008800][size=2]usuario_idusuario?[/size][/color]

[color=#008800][size=2]

[/size][/color]

[color=#008800][size="2"]Sí que parece que pueda estar el error en la relation[/size][/color]

Mien estos son los campos de mis tablas:




Tabla de Comentario

	1 	idcomentario 	int(100) 	

	2 	usuario_idusuario 	int(200) 

	3 	contenido 	varchar(140) 	

	4	fechahora 	date 		

	5 	adjunto 	varchar(200) 	

Tabla de Usuario

  1 	 idusuario 	int(200) 	

  2 	nombre 	varchar(150) 	

  3 	apellidos 	varchar(150) 

  4 	email 	varchar(150) 	

  5 	role 	int(11) 	

  6 	last_login 	timestamp 

  7 	password_2 	varchar(150) 	

  8 	descripcion 	tinytext 	

  9 	foto           varchar(200)



Espero que esto les haga ver mejor el problema.Muchas Gracias

comprueba que existan los registros de usuario a los que intentas acceder

Asumo en usuarios idusuario es Primary key

int(200)?..seguro?

Disculpa la demora,idusuario si es el primary key y es int(100).

Ya ví cual era el error, el problema estaba en la relación que estaba declarando en el modelo de comentario.En vez de usuario_idusuario era con idcomentario.Disculpen no me dira cuenta de esto antes.Gracias por su ayuda que sirvió de mucho.




return array(

        'usuarios'=>array(self::BELONGS_TO, 'Usuario', [b]'idcomentario'[/b]),

        );