Какую схему базы данных мне следует использовать?
Я хочу создать пользовательский модуль голосования, чтобы узнать, как написать модуль. Таблица голосования будет содержать четыре поля (идентификатор, название, vote_up, vote_down).
Должен ли я создать новую таблицу? Если я создам новую таблицу базы данных, как мне сохранить связь с голосуемым узлом?
2 answers
Если вы хотите создать модуль для голосования, вам следует изучить API для голосования , это модуль API, который предлагает общие функции и хранилище базы данных для использования модулями для голосования.
Однако, поскольку это учебное упражнение, вы можете сделать все это самостоятельно, в данном случае:
- Используйте hook_schema() для определения схемы вашей базы данных (пример на странице документации довольно понятен!)
- В Drupal 6 вам необходимо вручную указать какую схему установить, чтобы реализовать hook_install() и hook_uninstall():
function mymodule_install() {
drupal_install_schema('mymodule');
}
function mymodule_uninstall() {
drupal_uninstall_schema('mymodule');
}
Пример hook_schema может выглядеть следующим образом:
/**
* Implementation of hook_schema()
*/
function mymodule_schema() {
$schema['mymodule_votes'] = array(
'description' => 'Your schema',
'fields' => array(
'vid' => array(
'description' => 'vote id',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'nid' => array(
'description' => 'node id',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'vote_up' => array(
'description' => 'number of votes up',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0
),
'vote_down' => array(
'description' => 'number of votes down',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0
),
),
'primary key' => array('vid'),
'indexes' => array('node id' => array('nid'))
);
return $schema;
}
Примеры имеет Пример nodeapi, который реализует пятизвездочное голосование на узлах.
Для версии D7 вы хотели бы вместо этого иметь дело с сущностями, но это рабочий пример того, как вы можете настроить схему для голосования, исходя из ваших потребностей.