Вопрос

У меня есть проблемы с схемой Drupal 7 для модуля. Есть 4 столы, но для образца 2 будет достаточно:

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

Этот код создает таблицы, но не внешние ключей. Пример для реализации я получаю от drupal.org: http://drupal.org/node/146939.

Версия Drupal составляет 7,0-бета 3. Идея: может быть, это еще не реализовано, я его не вижу в node Таблица (пример документации указывает на код из его установщика).

Спасибо за помощь.

Это было полезно?

Решение

В соответствии с эта почта, всего несколько месяцев назад, hook_schema Функция не реализует создание иностранных клавиш. Это может, однако, ссылаться на существующие.

Возможно, работа - вокруг будет запускать SQL с добавлением внешнего ключа в hook_init (или один из других методов API). Извините, кажется, что сейчас не является лучшей резолюцией.

Другие советы

У вас есть правильная идея, это еще не реализовано: /

Я понятия не имею, почему они не утверждают это не заметно, но, по-видимому, декларации иностранных ключей предназначены для целей документации только на данный момент (и препарат, чтобы сделать что-то полезное с ними позже, по крайней мере, можно надеяться так).

Видеть Этот комментарий и ниже на (неправильно) «Добавить зарубежные ключи в ядру» нить.

Это очень старый пост, но для справки это может помочь

'foreign keys' => array(
    'series_id' => array(
        'table' => 'series',
        'columns' => array('id' => 'series_id'),
    ),
),
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top