Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/12/2013, 09:01
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: CakePHP - Cannot add or update a child row: a foreign key constraint fails

Cita:
Tabla users: (solo pongo los campos relacionados)
id int(10)
post_id int(10)

Tabla posts
id int(10)
user_id int(10)

Tabla profiles
id int(10)
user_id int(10)
Perdona que te lo diga así, pero esto es un espanto...
Está tan mal armada que jamás te funcionará. Mi mejor consejo es que antes de proseguir, estudies un poco de fundamentos de base de datos y en especial lo que se denominan dependencias funcionales.

Para hacértelo simple, el tema, por o que parecen indicar tus tablas es que USERS tiene la FK de POSTS, y POSTS la FK de USERS...
Eso es lo que se denomina "dependencia circular" y es uno de los peores casos que puede existir en una base, por cuanto si para insertar un usuario necesitas la FK del post, y para poner un post, debe existir el usuario... la gallina nunca pondrá el huevo.
Los posts pertenecen a un usuario, y eso implica que cada post debe tener su correspondiente FK del usuario a quien pertenecen. Pero no se debe jamás poner la FK del post en la tabla de usuarios porque no es relevante, es redundante (por reflexibilidad es innecesario), y genera una dependencia imposible de cumplir.
Por otro lado, tampoco es posible poner en la tabla de perfiles a usuario, porque si un usuario tiene un perfil, es el usuario el que tiene la FK, y no el perfil.
Y si un usuario puede tener N perfiles, se requiere una tabla adicional (tabla relacional) para representar una relación N:N. Y eso significa que deberían existir la tabla USERS, la tabla PROFILES y una que podrías llamar USER_PROFILES, cuya PK está constituida por las FK de cada una de las otras dos tablas... al mismo tiempo.


¿Se va entendiendo?

Este es un tema ajeno al CakePHP, es un problema de bases de datos y te recomiendo que lo postees allá, o bien que pidas que lo muevan, para poder tratarlo en profundidad (los temas de BBDD no son de programación y viceversa).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)