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

CakePHP - Enlazar 3 tablas en un modelo

Estas en el tema de CakePHP - Enlazar 3 tablas en un modelo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Tengo las siguienes tablas con los siguientes campos: Usuarios id localidad_id Localidades id provincia_id Provincias id Hice el siguiente modelo: Código PHP: <?php class  Usuario  ...
  #1 (permalink)  
Antiguo 28/03/2010, 14:05
 
Fecha de Ingreso: marzo-2010
Ubicación: Córdoba, Argentina
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Exclamación CakePHP - Enlazar 3 tablas en un modelo

Tengo las siguienes tablas con los siguientes campos:
  • Usuarios
    • id
    • localidad_id
  • Localidades
    • id
    • provincia_id
  • Provincias
    • id

Hice el siguiente modelo:

Código PHP:
<?php

class Usuario extends AppModel {
    var 
$name 'Usuario';
    var 
$belongsTo 'Localidad';
    }

?>

Hice el controlador usuarios_controller del siguiente modo:

Código PHP:
<?php
class UsuariosController extends AppController {

    var 
$scaffold;

}
?>

Y hasta acá vamos bien. Me aparece una columna con el id del usuario y una columna a la derecha con la respectiva localidad en la que vive.


Pero quisiera, además, incluir una tercera columna a la derecha de la localidad y con la provincia a la que pertenece dicha localidad.

Cabe aclara que ya tengo hechos los controladores de las localidades y provincias. También sus respectivos modelos relacionados mediante belongsTo. Solo necesito traer la provincia al modelo "Usuarios" y que la provincia se relacione con la localidad de cada usuario.

¿Me explique mas o menos bien?
¿Me pueden ayudar amigos?
  #2 (permalink)  
Antiguo 28/03/2010, 14:54
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: CakePHP - Enlazar 3 tablas en un modelo

Si todo está bien configurado prueba con Usuario->Localidad->Provincia
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 28/03/2010, 15:08
 
Fecha de Ingreso: marzo-2010
Ubicación: Córdoba, Argentina
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: CakePHP - Enlazar 3 tablas en un modelo

Cita:
Iniciado por jcxnet Ver Mensaje
Si todo está bien configurado prueba con Usuario->Localidad->Provincia
Gracias amigo, pero donde pongo eso?
  #4 (permalink)  
Antiguo 28/03/2010, 15:30
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: CakePHP - Enlazar 3 tablas en un modelo

Puedes usarlo en tu controlador de usuarios, si necesitas el id de la provincia puedes leerla:
Código PHP:
...
$id_provincia $this->Usuario->Localidad->Provincia->id;
... 
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #5 (permalink)  
Antiguo 28/03/2010, 15:50
 
Fecha de Ingreso: marzo-2010
Ubicación: Córdoba, Argentina
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: CakePHP - Enlazar 3 tablas en un modelo

Cita:
Iniciado por jcxnet Ver Mensaje
Puedes usarlo en tu controlador de usuarios, si necesitas el id de la provincia puedes leerla:
Código PHP:
...
$id_provincia $this->Usuario->Localidad->Provincia->id;
... 
Hay alguna forma de hacerlo desde el modelo y no desde el controlador? Es un campo que voy a usar en todos los casos. Sería útil traerlo desde el modelo.
  #6 (permalink)  
Antiguo 28/03/2010, 17:07
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: CakePHP - Enlazar 3 tablas en un modelo

Desde el modelo puedes probar con
Código PHP:
...
$id_provincia $this->data['Usuario']['Localidad']['Provincia']['id'];
... 
nunca lo he probado, siempre los he usado desde el controller pero en teoría debe funcionar, nos comentas luego
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **

Etiquetas: cakephp, join, joins, left, modelo, recursive, relaciones, select, sql, tablas
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 11:30.