Drupal 8 - dodanie tabeli do bazy danych w module

Kolejny artykuł z cyklu tworzenia modułów do Drupala. Tym razem pokażę jak we własnym module dodać tabelę do bazy danych. Należy utworzyć plik my_module.install w katalogu głównym modułu. W celu utworzenia własnej tabeli potrzebujesz przynajmniej metody hook_schema() w pliku my_module.install. również używamy poniżej hook_install(), która jest wywoływana po hook_schema(), aby dodać kilka przykładowych rekordów do naszej tabeli mymodule_managers.

<?php
/**
 * hook_schema()
 */
function my_module_schema() {

  $schema['mymodule_managers'] = array(
    'description' => 'Store managers',
    'fields' => array(
      'pid' => array(
        'type' => 'serial',
        'not null' => TRUE,
        'description' => 'Primary Key: Unique manager ID.',
      ),
      'uid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'description' => "Creator user's {users}.uid",
      ),
      'name' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
        'description' => 'Name of the manager.',
      ),
      'age' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'size' => 'tiny',
        'description' => 'The age of the manager in years.',
      ),
    ),
    'primary key' => array('pid'),
    'indexes' => array(
      'name' => array('name'),
      'age' => array('age'),
    ),
  );
  return $schema;
}

/**
 *  hook_install()
 */
function my_module_install() {
  $values = [
    [
      'name' => 'Paul',
      'age' => 30,
      'uid' => 1,
    ],
    [
      'name' => 'Jan',
      'age' => 40,
      'uid' => 1,
    ],
  ];
  $database = \Drupal::database();
  $query = $database->insert('mymodule_managers')->fields(['name', 'age', 'uid']);
  foreach ($values as $m) {
    $query->values($m);
  }
  $query->execute();

}
Tabela jest tworzona w momencie instalacji modułu. Natomiast podczas deinstalacji jest usuwana.