Таблицы описываются в файле с расширением .install и хуке hook_shema(). Затем с помощью хука hook_install() добавляются в базу при инсталляции модуля, и удаляются с помощью хука hook_uninstall() при удалении модуля на странице admin/build/modules/uninstall
<?php // файл mymodule.install
/**
* Реализация hook_schema()
* Описываем таблицу table1 с двумя полями — nid и sometext
*/
function mymodule_schema() {
$schema['table1'] = array(
'description' => 'The base table for mymodule.',
'fields' => array(
// описание поля nid
'nid' => array(
'description' => t('Node ID'),
'type' => 'serial',
'unsigned' => true,
'not null' => true,
),
// описание поля sometext
'sometext' => array(
'description' => t('Some text'),
'type' => 'varchar',
'length' => 255,
'not null' => true,
'default' => '',
),
),
'primary key' => array('nid'),
);
return $schema;
}
/**
* Реализация hook_install()
* Создание таблицы table1 при инсталляции модуля
*/
function mymodule_install() {
drupal_install_schema('mymodule');
}
/**
* Реализация hook_uninstall()
* Удаление таблицы table1 при удалении модуля
*/
function mymodule_uninstall() {
drupal_uninstall_schema('mymodule');
}
Написанное актуально для
Drupal 6.x
Похожие записи
- Как работает опция "Aggregation type" в настройках полей Views при включённой агрегации
- Views сортировка по выражению/условию/формуле
- Views фильтр "товар имеет опубликованную вариацию"
- Модуль EAV Field — хранение большого числа характеристик сущности в одном поле
- Добавить сторонней контент сущности своё базовое поле (base field)
Комментарии
У Меня почему-то не работает.
При этом drupal никаких ошибок или предупреждений не выдает(
В какую сторону смотреть?
смотрите исходники других модулей, сравнивайте, пробуйте. если не поможет — http://drupal.org/project/issues/drupal
разве не drupal_install_schema('table1');
нет
окей, почему может быть такая ситуация (друпал 7):
- при установке модуля таблицы создаются, однако выводистя ошибка типа тиблица уже существует
- после удаления модуля через admin/modules/uninstall таблицы не удаляются
видимо забыли drupal_uninstall_schema
а вот и нет. не забыл.
даже если вручную после удаления модуля удаляю талицы, удаляю запись о моем модуле в таблице system, всёравно после установки модуля получаю ошибку, что таблица уже создана
и таблица действительно создается. откуда ошибка -- не понятно. почему таблицы сами не удаляются -- тоже не понятно.
аа... понял
прописал как
drupal_install_schema('table1');
drupal_install_schema('table2');
где 'table1', 'table2' мои таблицы в хуке Schema... -- действительно в мануалах везде пишут модуль, но с модулем не работает.
думаю с удалением таже баня
это не будет работать
с удалением видимо какая-то др трабла. по наитию решить не получилось
Для семерки не надо прописывать
my_module_install() {
}
и
my_module_uninstall() {
}
А как в 8ке? К примеру поставил модуль с орга entity browser. Файл entity_browser.install есть а файла uninstall нет. Значит ли єто что модуль после удаления не прибирает за собой?
uninstall файла и не должно быть, оба хука hook_install() и hook_uninstall() всегда пишутся в .install файл. И hook_uninstall() требуется не для каждого модуля.
Добавить комментарий