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.

  1. <?php
  2. /**
  3. * hook_schema()
  4. */
  5. function my_module_schema() {
  6.  
  7. $schema['mymodule_managers'] = array(
  8. 'description' => 'Store managers',
  9. 'fields' => array(
  10. 'pid' => array(
  11. 'type' => 'serial',
  12. 'not null' => TRUE,
  13. 'description' => 'Primary Key: Unique manager ID.',
  14. ),
  15. 'uid' => array(
  16. 'type' => 'int',
  17. 'not null' => TRUE,
  18. 'default' => 0,
  19. 'description' => "Creator user's {users}.uid",
  20. ),
  21. 'name' => array(
  22. 'type' => 'varchar',
  23. 'length' => 255,
  24. 'not null' => TRUE,
  25. 'default' => '',
  26. 'description' => 'Name of the manager.',
  27. ),
  28. 'age' => array(
  29. 'type' => 'int',
  30. 'not null' => TRUE,
  31. 'default' => 0,
  32. 'size' => 'tiny',
  33. 'description' => 'The age of the manager in years.',
  34. ),
  35. ),
  36. 'primary key' => array('pid'),
  37. 'indexes' => array(
  38. 'name' => array('name'),
  39. 'age' => array('age'),
  40. ),
  41. );
  42. return $schema;
  43. }
  44.  
  45. /**
  46. * hook_install()
  47. */
  48. function my_module_install() {
  49. $values = [
  50. [
  51. 'name' => 'Paul',
  52. 'age' => 30,
  53. 'uid' => 1,
  54. ],
  55. [
  56. 'name' => 'Jan',
  57. 'age' => 40,
  58. 'uid' => 1,
  59. ],
  60. ];
  61. $database = \Drupal::database();
  62. $query = $database->insert('mymodule_managers')->fields(['name', 'age', 'uid']);
  63. foreach ($values as $m) {
  64. $query->values($m);
  65. }
  66. $query->execute();
  67.  
  68. }
Tabela jest tworzona w momencie instalacji modułu. Natomiast podczas deinstalacji jest usuwana.

Strona korzysta z plików cookies

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.
OK
Więcej
Free cookie consent by cookie-script.com