Le chiavi esterne in Drupal 7 schema di guai
-
26-09-2019 - |
Domanda
Ho un problema con Drupal 7 dello schema per il modulo. Ci sono 4 tavoli, ma per il campione 2 sarà sufficiente:
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;
}
Questo codice creare tabelle, ma non le chiavi esterne. Esempio di implementazione che ricevo da Drupal.org: http://drupal.org/node/146939
versione Drupal è 7,0-beta 3
..Come idea:. Forse, non è ancora implementato, io non la vedo nella tabella node
(documentazione esempio punto per il codice da esso dell'installatore)
Grazie per il vostro aiuto.
Soluzione
questo post , a pochi mesi fa, la funzione hook_schema
non implementa la creazione di chiavi esterne. Si può, tuttavia, quelli esistenti di riferimento.
Forse un work-around potrebbe essere quella di eseguire l'SQL chiave esterna aggiunto in hook_init
(o uno degli altri metodi API). Ci dispiace, ma non sembra essere una migliore risoluzione a questo momento.
Altri suggerimenti
Hai l'idea giusta, questo non è ancora implementata: /
Non ho idea del motivo per cui non stato questo ben visibile, ma a quanto pare, le dichiarazioni chiave esterna sono solo a scopo di documentazione solo al momento (e una preparazione per fare qualcosa di utile con loro più tardi, almeno si spera così).
questo commento e sotto sul (erroneamente chiamata) 'aggiungere chiavi esterne al core' filetto
questo è un post molto vecchio, ma per riferimento questo può aiutare
'foreign keys' => array(
'series_id' => array(
'table' => 'series',
'columns' => array('id' => 'series_id'),
),
),