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

{hook}_schema y crear un foreign keys

Estas en el tema de {hook}_schema y crear un foreign keys en el foro de Drupal en Foros del Web. Estoy creando un módulo y en el .install estoy creando una tabla mediante {hook}_schema. Todo va bien, me crea la tabla con campos y propiedades ...
  #1 (permalink)  
Antiguo 08/11/2012, 05:32
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
{hook}_schema y crear un foreign keys

Estoy creando un módulo y en el .install estoy creando una tabla mediante {hook}_schema. Todo va bien, me crea la tabla con campos y propiedades correctamente, pero a la hora de crear el foreign keys no lo hace.

Tengo un campo llama "uid" (id del usuario) y quiero enlazarlo con el mismo campo de la tabla users.

Estoy usando el siguiente código:

Código PHP:
Ver original
  1. $schema['table_nme'] = array(
  2.  
  3.     'fields' => array(
  4.         [...]
  5.     ),
  6.     'foreign keys' => array(
  7.         'users' => array(
  8.             'uid' => 'uid'
  9.         )
  10.     )
  11.        
  12. );

Googleando y buscando en la documentación de la API he visto declararlo de 3 formas distintas y ninguna me funciona, además, leí en los grupos de drupal (pero estaba escrito en el 2007) que no estaba soportado el foreign keys.
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios
  #2 (permalink)  
Antiguo 08/11/2012, 10:11
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 8 meses
Puntos: 52
Respuesta: {hook}_schema y crear un foreign keys

Código PHP:
Ver original
  1. 'foreign keys' => array(
  2.       'uid' => array(
  3.         'table' => users,
  4.         'columns' => array('uid' => 'uid'),
  5.       )

Seria mas o menos asi.

Segun http://api.drupal.org/api/drupal/mod.../hook_schema/7
__________________
Aprendiendo!!!
  #3 (permalink)  
Antiguo 08/11/2012, 19:57
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: {hook}_schema y crear un foreign keys

Tener en cuenta que es solo para documentar el schema. En realidad esto no modifica las tablas. Para eso podes usar el hook install:

Código PHP:
Ver original
  1. /*Instalar*/
  2. function HOOK_install() {
  3.   db_query('
  4.    ALTER TABLE {...}
  5.    ADD CONSTRAINT {...}
  6.    FOREIGN KEY (...) REFERENCES {.....} (...)
  7.  ');
  8. }
  9.  
  10. /* desinstalar*/
  11. function HOOK_uninstall() {
  12.     db_query('
  13.    ALTER TABLE {...}
  14.    DROP CONSTRAINT IF EXISTS {...}
  15.  ');
  16. }

Supongo que es algo asi, no le podido comprobar...
__________________
Drupal Argentina
  #4 (permalink)  
Antiguo 09/11/2012, 03:48
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: {hook}_schema y crear un foreign keys

Eso justamente iba a escribir.

Seguí buscando información más reciente de este año sobre el foreign keys y todo decían lo mismo que ya había leído, que sólo está documentada y no soportada.

La solución, la que dice @NUCKLEAR.
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios

Última edición por hasdpk; 09/11/2012 a las 05:00

Etiquetas: keys, usuarios, 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 09:40.