Question

J'ai un problème avec le schéma Drupal 7 pour le module. Il y a 4 tables, mais pour l'échantillon 2 sera suffisant:

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;
}

Ce code crée des tables, mais pas les clés étrangères. Exemple de mise en œuvre que je reçois de Drupal.org: http://drupal.org/node/146939

La version Drupal est 7.0 bêta 3 ..As idée:. Peut-être, il n'est pas encore mis en œuvre, je ne le vois pas dans le tableau de node (documentation point par exemple le code de l'installateur est tout)

Merci pour votre aide.

Était-ce utile?

La solution

Selon ce message , il y a quelques mois, la fonction hook_schema ne met pas en œuvre la création de clés étrangères. Il peut, cependant, référence ceux qui existent déjà.

Peut-être un travail autour serait d'exécuter le SQL ajoutée clé étrangère dans hook_init (ou l'une des autres méthodes de l'API). Désolé, il ne semble pas être une meilleure solution à ce moment.

Autres conseils

Vous avez la bonne idée, ce n'est pas encore mis en œuvre: /

Je ne sais pas pourquoi ils ne déclarent pas en bonne place, mais apparemment, les déclarations clés étrangères sont à des fins de documentation uniquement au moment (et une préparation à faire quelque chose d'utile avec eux plus tard, au moins on l'espère).

Voir ce commentaire et ci-dessous sur la (mal nommée) 'ajouter des clés étrangères à noyau' fil

est un poste très vieux, mais pour référence cette aide peut

'foreign keys' => array(
    'series_id' => array(
        'table' => 'series',
        'columns' => array('id' => 'series_id'),
    ),
),
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top