Las claves externas en Drupal 7 problemas de esquema
-
26-09-2019 - |
Pregunta
Tengo un problema con Drupal 7 esquema para el módulo. Hay 4 mesas pero para la muestra 2 será suficiente:
function mymodule_schema() {
$schema['series'] = array(
'fields' => array(
'id' => array(
'type' => 'serial',
'unsigned' => true,
'not null' => true,
),
'name' => array(
'type' => 'varchar',
'length' => 255,
'not null' => true,
),
),
'unique keys' => array(
'name' => array('name'),
),
'primary key' => array('id'),
);
$schema['sermon'] = array(
'fields' => array(
'id' => array(
'type' => 'serial',
'unsigned' => true,
'not null' => true,
),
'title' => array(
'type' => 'varchar',
'length' => 255,
'not null' => true,
),
'series_id' => array(
'type' => 'int',
),
),
'foreign keys' => array(
'series_id' => array(
'table' => 'series',
'columns' => array('series_id' => 'id'),
),
),
'primary key' => array('id'),
);
return $schema;
}
Este código crear tablas, pero no las claves externas. Ejemplo de aplicación que recibo de Drupal.org: http://drupal.org/node/146939
versión Drupal es 7,0-beta 3
..As idea:. Quizá, no se ha implementado todavía, yo no lo veo en la tabla node
(documentación ejemplo, el punto de código de ella de instalador)
Gracias por su ayuda.
Solución
De acuerdo con este post , hace tan sólo unos meses, la función hook_schema
no implementa la creación de llaves extranjeras. Puede, sin embargo, de referencia ya existentes.
Tal vez una solución alternativa sería la de ejecutar el SQL-adición-clave externa en hook_init
(o uno de los otros métodos de la API). Lo sentimos, no parece ser una mejor resolución en este momento.
Otros consejos
Usted tiene la idea correcta, esto no se ha implementado todavía: /
No tengo ni idea de por qué no se indica esta forma destacada, pero al parecer, las declaraciones de claves externas son para fines de documentación sólo en el momento (y una preparación para hacer algo útil con ellos más tarde, al menos, uno podría esperar que así sea).
este comentario y por debajo en la (mal llamada) 'añadir claves externas a núcleo' hilo
este es un post muy viejo, pero para referencia Esto puede ayudar
'foreign keys' => array(
'series_id' => array(
'table' => 'series',
'columns' => array('id' => 'series_id'),
),
),