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]),
);