Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Cakephp Novato, usar varias tablas en una vista

Estas en el tema de Novato, usar varias tablas en una vista en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos, me estoy iniciando en CakePHP y pues voy aprendiendo poco a poco. Ya realice el tutorial de blog del sitio web de CakePHP ...
  #1 (permalink)  
Antiguo 24/03/2012, 23:12
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Pregunta Novato, usar varias tablas en una vista

Hola amigos, me estoy iniciando en CakePHP y pues voy aprendiendo poco a poco.

Ya realice el tutorial de blog del sitio web de CakePHP y tengo la siguiente duda.

A través del tutorial que encontré pude ver como hacer juegos de registros, agregar, editar y eliminar contenido de una tabla, pero mi pregunta es, como hago una vista que tome registros de mas de una tabla?

Y por otro lado como hago juegos de registros relacionados como post y categorías donde cada post pertenece a una categoría.

Agradecería si tienen algún tutorial en español sobre como hacer esto. xD
Gracias
  #2 (permalink)  
Antiguo 29/03/2012, 19:04
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: Novato, usar varias tablas en una vista

Hola, para la primer pregunta "como hago una vista que tome registros de mas de una tabla?" lo que tengo entendido es que la vista no toma los registros directamente, al ser MVC el controller se encarga de buscar los datos que presentará la vista y entonces hace el $this->set('nombre', $valor); para que desde la vista pueda ser leido.

Entonces si desde el controlador necesitas registros de varias tablas y si estas tablas están relacionadas entre si y tus modelos tienen dichas relaciones con un $this->Tabla->find('all'); será suficiente para que te traiga la información de la tabla y las tablas relacionadas.

Ahora que si tu $recursive esta en un nivel bajo que no lo haga automático, puedes hacerlo también con $this->loadModel('NombreTabla'); y con eso se hace el forzado a cargar la tabla, y nuevamente utilizas el $this->Tabla->find para traer datos relacionados, ya que te devuelva la información lo que tienes que hacer es un $this->set('nombre', $valor); y en tu vista leer if(isset($nombre)) pr($nombre);

La segunda pregunta "Y por otro lado como hago juegos de registros relacionados como post y categorías donde cada post pertenece a una categoría" no me quedó muy clara del todo, lo que entiendo es que quieres guardar un post con su respectiva categoria, de ser así lo primero que se necesita es que en la base de datos tengan su correspondiente relación de llave foránea entre post y categoria, luego en los modelos debes establecer las relaciones belongsTo o hasOne correspondientes, luego en tu formulario cuando creas el input pones modelo.campo para que en $this->data aparezca tal cual lo quieras guardar, entonces puedes usar $this->save('all') para guardar tus datos.

Saludos, espero haberme explicado y que te sea de utilidad.
  #3 (permalink)  
Antiguo 29/03/2012, 19:15
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Respuesta: Novato, usar varias tablas en una vista

Hola amigo gracias por tu respuesta me fue muy util para varias cosas que no entendia, pero mi pregunta sobre bases de datos relacionadas ya la solucione y es con

hasOne ("tiene un")
hasMany ("tiene muchos")
belongsTo ("pertenece a")
hasAndBelongsToMany ("tiene y pertenece a muchos")

La verdad es que si soy muy novato en esto pero ahí voy...
  #4 (permalink)  
Antiguo 03/04/2012, 11:55
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: Novato, usar varias tablas en una vista

Bien, ganas y paciencia, mucho éxito en tus proyectos.

Saludos

Etiquetas: cakephp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:01.