El 24/10/07, PRF! <[EMAIL PROTECTED]> escribió:
>
> Hola muchachos..
>
> he estado lidiando un resto con el modelo, ya me trague el cuento de
> las convenciones y las referencias hasMany, hasOne, etc..
>
> despues de todo eso me queda una gran duda:
>
> ¿que pasa con los foreign_key creados para las tablas en la base de
> datos?, ¿son necesarios de todas formas?,
las FK en la base de datos deberian ir *siempre*. con eso aseguras la
integridad referencial y que independientemente de la aplicacion tus
datos estaran siempre protegidos.... Cake es muy bueno, pero podria
fallar o quizas (algo mas probable) el desarrollador no configure
correctamente las relaciones en Cake... ;)
> ¿importa su nombre?
se supone que no, pero si sigues las convenciones de Cake te podras
ahorrar posibles dolores de cabeza...
en todo caso, y como siempre, hay un *depende* con respecto a este
tema. en algunos casos se prefiere dejar la validacion de la
integridad referencial en la aplicacion y no en la BD, principalmente
cuando se trata de sitios con alto trafico.
> Estoy trabajando en una pequeña aplicacion que me ayude a comprender
> mas el mundo de este framework y a pesar de que creo que el modelo y
> los controladores estan bien a pesar de su simpleza me gustaria saber
> que debo esperar de cake cuando intento eliminar un registro de una
> tabla con llave foranea (sin utilizar scaffold).
>
> En mi ejemplo tengo una funcion delete en cierto controlador, que no
> es mas que esto
>
> function delete($id)
> {
> if ($this->Category->del($id))
> {
> $this->flash('El registo con id: '.$id.' fue
> eliminado.',
> '/categories');
> }
> }
>
> entonces cuando voy eliminar efectivamente no puedo porque hay un FK
> involucrado pero es mySQL quien devuelve el error, no cake, como me lo
> esperaba.
>
> "Warning: SQL Error: 1451: Cannot delete or update a parent row: a
> foreign key constraint fails (`cuco/categories`, CONSTRAINT
> `FK_GROUP_ID` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`)) in /
> Users/PRF/Web/cuco/cake/libs/model/datasources/dbo_source.php on line
> 437"
>
> para que cake valide las FK antes de hacer la query en mySQL ¿que debo
> hacer?, ¿existe alguna funcion predefinida?, ¿es parte del controlador
> (supongo)?
podrias implementar algo tu mismo en beforeDelete() de tu Modelo. lo
que tiene Cake es la opcion 'dependent' de una asociacion, la cual
realiza lo mismo que una FK de tipo ON DELETE CASCADE.
me imagino que por lo mismo Cake no implementa (por defecto) lo que tu
describes; las FK no necesariamente se usan para restringir...
--
Ricardo Mun~oz A.
--~--~---------~--~----~------------~-------~--~----~
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.
-~----------~----~----~----~------~----~------~--~---