Pergunta

Tenho um problema com o Drupal 7 Schema para o módulo. Existem 4 tabelas, mas para a amostra 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 cria tabelas, mas não chaves estrangeiras. Exemplo de implementação que recebo de drupal.org: http://drupal.org/node/146939

A versão drupal é 7.0-beta 3 .. como ideia: talvez, ainda não seja implementada, eu não vejo isso em node tabela (exemplo de documentação aponte a codificar do instalador).

Obrigado pela sua ajuda.

Foi útil?

Solução

De acordo com esta postagem, apenas alguns meses atrás, o hook_schema A função não implementa a criação de chaves estrangeiras. No entanto, pode referenciar os existentes.

Talvez uma subida seria executar o SQL de adição de itens estrangeiros em hook_init (ou um dos outros métodos da API). Desculpe, não parece haver uma resolução melhor para isso agora.

Outras dicas

Você tem a ideia certa, isso ainda não foi implementado:/

Não tenho idéia de por que eles não declaram isso com destaque, mas, aparentemente, as declarações de chave estrangeira são para fins de documentação apenas no momento (e uma preparação para fazer algo útil com eles mais tarde, pelo menos um esperaria).

Ver este comentário e abaixo no (mal nomeado) 'Adicione chaves estrangeiras ao núcleo' fio.

Este é um post muito antigo, mas para referência isso pode ajudar

'foreign keys' => array(
    'series_id' => array(
        'table' => 'series',
        'columns' => array('id' => 'series_id'),
    ),
),
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top