Soy nuevo en esto de CakePHP y me metido directamente con el manual en
ingles, pese a que mi nivel no da ni para pedir una cerveza y eso que
soy borrachin :). Y me ha surgido una dudita, pese a que parezca muy
larga. Pero os aseguro que es una tonteria, lo que pasa es que me
gusta explicar las cosas bien.

La duda en cuestion es sobre los ejemplos puestos en el manual sobre
las relaciones de los modelos (Manual -> Models -> Section4:
Associations).

Para los dos ejemplos (hasOne y belongsTo) el campo foreignKey en
ambos arrays de las descripciones de las relaciones es el mismo para
las dos 'user_id'. Con lo que me imagino que al implementar la
relacion uno a uno entre la entidad User y Profile de la base de
datos, la clave externa se vuelca sobre la tabla de que representa a
la entidad Profile referenciando a la entidad User. Y por tanto el
campo foreignKey en las relaciones hasOne se refiere a la clave
externa que aparece en el modelo externo referenciando al mismo modelo
que estamos definiendo. Y el campo foreignKey en las relaciones
belongsTo se refiere en la clave externa que aparece en el modelo que
estamos defiendo referenciando al modelo externo. Se que me explico
como un libro cerrado, por lo que mejor utilizo el ejemplo que aparece
en el manual para explicarme.

<?php
class User extends AppModel
{
        var $name = 'User';
        var $hasOne = array('Profile' =>
                array('className'    => 'Profile',
                        'conditions'   => '',
                        'order'        => '',
                        'dependent'    =>  true,
                        'foreignKey'   => 'user_id'
                        /* Aqui foreign key indica la clave externa que aparece 
en el
modelo externo (Profile) que referencia al modelo que estamos
definiendo (User) */
                        )
                );
}
?>

<?php
class Profile extends AppModel
{
        var $name = 'Profile';
        var $belongsTo = array('User' =>
                array('className'  => 'User',
                        'conditions' => '',
                        'order'      => '',
                        'foreignKey' => 'user_id'
                        /* Aqui foreignKey se refiere a la clave externa que 
aparece en el
modelo que estamos definiendo referenciando al modelo externo */
                        )
                );
}
?>

Se que me lio como la pata de un romano pero por modelo externo me
refiero al modelo que asociamos al modelo que estamos definiendo.

Con lo que me he liado es porque en la descripcion del atributo
foreignKey para los dos tipos de relaciones aparece exactamente la
misma frase: "foreignKey: the name of the foreign key that points to
the associated model." que traduzco literalmente como "foreignKey: el
nombre de la clave externa que apunta al modelo asociado". Pero si es
como yo digo esto no me cuadra ya que en la relacion belongsTo si es
asi ya que al definir el modelo Profile el foreignKey guarda el nombre
de la clave externa que apunta al modelo asociado (User). Pero al
definir el modelo User no es asiya que la el foreignKey usado en la
relacion hasOne es user_id que apunta al mismo modelo que estamos
definiendo y no al que estamos asociando.

SOLUCIONES POSIBLES a mi ordenadas de mayor a menor probabilidad de
exito

SOLUCION 1: Error fatal de comprension y/o traduccion debido a mi bajo
nivel de inglés o por que este hecho un zoquete y no me enterado.
SOLUCION 2: Un error en la redaccion del manual y no debería haberse
empleado la misma frase para definir el atributo foreignKey de las dos
relaciones.
SOLUCION 3: Un error en la redaccion del manual y al definir la
relacion hasOne la foreignKey debería ser profile_id

Muchas gracias a todo aquel que se haya tenido la paciencia para
leerse toda la parrafada independientemente de que me resuelva la duda
o no.

Esto me pasa por intentar tragarme el manual entero antes de empezar a
picar codigo. No sé si al final aprendere Cake pero de inglés un
monton.

Muchas gracias de nuevo.


--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos 
de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/CakePHP-es?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a