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

Ayuda con asociacion de modelos con cakephp

Estas en el tema de Ayuda con asociacion de modelos con cakephp en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos!! soy nueva usando cakephp y estoy un tanto perdida, les cuento mi drama ((( ojala alguien me pueda ayuda ))) Explico del ...
  #1 (permalink)  
Antiguo 22/06/2009, 01:58
 
Fecha de Ingreso: junio-2009
Mensajes: 13
Antigüedad: 15 años, 6 meses
Puntos: 0
Ayuda con asociacion de modelos con cakephp

Hola a todos!!
soy nueva usando cakephp y estoy un tanto perdida, les cuento mi drama ((( ojala alguien me pueda ayuda )))

Explico del principio: poseo dos tablas (cada una con su modelo, controlador y vistas)
- una llamada 'anos_informars' con su modelo 'AnosInformar' la que contiene el campo 'id' y tres años, es decir, 'ano1' 'ano2' y 'ano3'
- la otra tabla se llama 'postulantes' con su modelo 'Postulante' la que contiene el campo 'id' e informacion varia de cada año que se encuentra en la tabla 'anos_informar'.

Lo que quiero hacer es que desde la vista de postulantes mostrar los 3 años que estan en la tabla 'anos_informars'. Para eso lo que hice fue asociar modelos, lo que puse en el modelo Postulante es:

class Postulante extends AppModel {
var $name = 'Postulante';
var $hasOne = array('AnosInformar' =>
array('className' => 'AnosInformar',
'foreignKey' => 'id'
)
);

y lo que esta en el modelo de AnosInformar es:

var $name = 'AnosInformar';
var $hasOne = array('Postulante' =>
array('className' => 'Postulante',
)
);

y en la vista de postulantes, tengo lo siguiente:
<?php echo $anosInformars['AnosInformar']['ano1'];?> //linea 49 de postulante/index.ctp

arrojando el siguiente error:
Undefined variable: anosInformars [APP\views\postulantes\index.ctp, line 49]

Por lo que entiendo el error esta en como muestro los datos en la vista, ya que creo tener bien la asociacion de los modelos o tambien lo tengo malo ???

¡¡¡ por favor ayudenme !!!
  #2 (permalink)  
Antiguo 22/06/2009, 05:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Ayuda con asociacion de modelos con cakephp

intenta hacer un var_dump() de $anosInformar en tu vista... para que analices el resultado y contenido de dicha variable
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/06/2009, 07:46
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 19 años, 2 meses
Puntos: 1
Mensaje Respuesta: Ayuda con asociacion de modelos con cakephp

No entiendo bien como se relacionan esas dos tablas. Y me refiero a nivel de base de datos.
Deduzco que la tabla postulantes tiene (o debería tener) una clave externa de tal forma que para un Postulante puedas conocer su AnosInformar. El nombre del campo debería ser anos_informar_id.
También podría ser al revés. Tener un campo en la tabla AnosInformar que se llame postulante_id.

Una vez que tengas bien definidas las relaciones a nivel de base de datos, el código de los modelos en CakePHP podría ser mas o menos así:
Código PHP:
class Postulante extends AppModel {
    var 
$name 'Postulante';
    var 
$hasOne = array('AnosInformar');
}

class 
AnosInformar extends AppModel {
    var 
$name 'AnosInformar';
    var 
$belongsTo = array('Postulante');

Si sigues las directrices de la documentación para los nombres de campos apenas tendrás que escribir código.

Mírate la documentación sobre las relaciones. En especial la parte de hasOne/belongsTo.
  #4 (permalink)  
Antiguo 22/06/2009, 10:26
 
Fecha de Ingreso: junio-2009
Mensajes: 13
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Ayuda con asociacion de modelos con cakephp

Gracias amigos por la pronta respuesta !!
ya he solucionado mi problema... dejo la solucion por si alguien tambien que enlazar modelos sin claves foraneas...

class AnosInformar extends AppModel {
var $name = 'AnosInformar';
var $validate = array(
'id' => array('numeric'),
'ano1' => array('numeric'),
'ano2' => array('numeric'),
'ano3' => array('numeric')
);
var $hasOne = array('Postulante' =>
array('className' => 'Postulante',
'foreignKey' => 'id'
)
);
}

class Postulante extends AppModel {
var $name = 'Postulante';
var $hasOne = array('AnosInformar' =>
array('className' => 'AnosInformar',
'foreignKey' => 'id'
)
);
}

finalmente en la vista:
<?php echo nl2br($postulante['AnosInformar']['ano1']);?>
<?php echo nl2br($postulante['AnosInformar']['ano2']);?>
<?php echo nl2br($postulante['AnosInformar']['ano3']);?>


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 02:24.