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.

È stato utile?

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'),
    ),
),
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top