J'ai un problème avec le schéma Drupal 7 pour le module. Il y a 4 tables mais pour l'exemple 2 suffira:Clés étrangères dans un problème de schéma Drupal 7
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 des 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 node
(documentation point d'exemple pour coder de son installateur).
Merci pour votre aide.
La seule chose que je peux penser est que peut-être 'id' ne peuvent pas être identifiés de manière unique dans la requête. Vous pouvez remplacer sermon.id par 'sermon_id' et series.id par' series_id' ou par quelque chose. Maintenant vous m'avez curieux, faites le moi savoir ça fonctionne! :) –
zourtney, je vais essayer hier (c'est la nuit pour moi maintenant), mais même si c'est un problème (étrange, table + fieldname devrait être suffisant et instruction SQL brute faire ce travail correct) J'ai besoin de solution pour corriger ce nom parce que le schéma est fourni par un tiers et je ne pouvais tout simplement pas le changer en production. – lifecoder
Ok, oublie cette idée; Je suppose que ce n'est pas encore implémenté Drupal. J'ai fait un post ci-dessous. Je me souviens avoir moi-même été confronté à ce problème il y a quelque temps. Il me semble que je me suis mal souvenu de la "solution". –