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.

¿Fue útil?

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'),
    ),
),
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top