Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

llaves foraneas en modulos drupal

Estas en el tema de llaves foraneas en modulos drupal en el foro de Drupal en Foros del Web. Hola a todos, mi pregunta es la siguiente, estoy traajando en crear un nuevo modulo en drupal xD y estoy trabajando en el archivo .install ...
  #1 (permalink)  
Antiguo 10/05/2011, 09:01
 
Fecha de Ingreso: septiembre-2009
Mensajes: 100
Antigüedad: 14 años, 7 meses
Puntos: 3
llaves foraneas en modulos drupal

Hola a todos, mi pregunta es la siguiente, estoy traajando en crear un nuevo modulo en drupal xD y estoy trabajando en el archivo .install y estoy haciendo los scripts de la creación de las tablas de la base de datos, voy a trabajan con 6 tablas, cada uno con su llave foranea pero hay algunas tablas que en mi esquema llevan llaves foraneas por ejemplo tengo una tabla de ordenes donde valga la redundancia tengo mis ordenes de venta de productos y en otra de prudcutos donde tengo mi catalogo de productos, he revisado algunos no muchos archivos .install de algunos modulos y no he visto que en esos se declaren llaves foraneas mi pregunta es, se declaran llaves foraneas en los modulos de drupal si no como podria hacer en ese caso, de antemano gracias.
  #2 (permalink)  
Antiguo 10/05/2011, 11:37
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: llaves foraneas en modulos drupal

Recien en D7 fueron agregadas las llaves foraneas. Por que no vas a las fuentes?

http://api.drupal.org/api/drupal/mod.../hook_schema/7

En D6 jamas he necesitado de FK. Cabe destacar ue nunca he creado un modulo como el que describes, uso los modulos que estan ya creados y facilitan las cosas: CCK, Views, nodereference, etc.
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 19/05/2011, 18:20
Avatar de tlaloc_2005  
Fecha de Ingreso: diciembre-2005
Ubicación: Barranquilla
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 5
Información Respuesta: llaves foraneas en modulos drupal

Hola, no se si ya habrás resuelto tu problema, pero para futuras búsquedas, aquí te dejo el dato de como lo resolví.

También me encontraba en el mismo predicamento, pues necesitaba que por nada del mundo se rompiera la integridad referencial en la base de datos de unos módulos que estoy creando, y la solución la encontré en la mismo sitio de drupal.

http://drupal.org/node/323314#comment-1444000

Básicamente tu primero creas las tablas con el hook_install y después puedes ejecutar los db_query con las instrucciones para enlazar las tablas.

Recomendaciones:
  • Tienes que asegurarte de convertir las tablas a innoDB ya que por defecto drupal utiliza MyISAM. La instrucción seria algo como:
Código PHP:
db_query("ALTER TABLE {nombre_tabla} ENGINE = INNODB"); 
  • La instrucción para enlazar las tablas seria algo como (Al momento de crear las tablas con el hook_install, recuerda crear los indices):
Código PHP:
db_query("ALTER TABLE {nombre_tabla_hijo} ADD CONSTRAINT `FK_nombre_llave` FOREIGN KEY (`guid`) REFERENCES {nombre_tabla_padre} (`guid`) ON DELETE RESTRICT  ON UPDATE RESTRICT"); 
  • Y por ultimo, es importante el orden en que creas las tablas porque en ese orden el hook_uninstall las borra, y con llaves foráneas te imaginaras que es mas complicado eliminar las tablas estando amarradas unas con otras.
__________________
Johan J. Gutierrez D.
Ingeniero Industrial, Tecnologo en Sistemas

Última edición por tlaloc_2005; 19/05/2011 a las 18:21 Razón: Mejorar redacción

Etiquetas: llaves, modulos, foreignkey
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 08:18.