Какую схему базы данных мне следует использовать?


Я хочу создать пользовательский модуль голосования, чтобы узнать, как написать модуль. Таблица голосования будет содержать четыре поля (идентификатор, название, vote_up, vote_down).
Должен ли я создать новую таблицу? Если я создам новую таблицу базы данных, как мне сохранить связь с голосуемым узлом?

 2
Author: kiamlaluno, 2011-04-26

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;
  }
 4
Author: Alex Weber, 2011-04-26 21:57:14

Примеры имеет Пример nodeapi, который реализует пятизвездочное голосование на узлах.

Для версии D7 вы хотели бы вместо этого иметь дело с сущностями, но это рабочий пример того, как вы можете настроить схему для голосования, исходя из ваших потребностей.

 0
Author: paul-m, 2012-01-11 01:20:19