Зарубежные ключевые ключи в Drupal 7 схемы
-
26-09-2019 - |
Вопрос
У меня есть проблемы с схемой 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'),
),
),