Як створити таблицю в спеціальному модулі


13

У Drupal 7 ми використовували hook_schema()у .install-файл для створення таблиці. Я вважаю, що в Drupal 8 ви можете це зробити і ви, але в мене склалося враження, що вам слід створити .yml файли зі своєю схемою.

Який метод створення таблиць у Drupal 8?


3
Ні, ти прав. hook_schemaЦе все ще спосіб створення користувальницьких таблиць у Drupal 8, які не описані об'єктами вмісту чи полями . Якщо ваша власна таблиця - це те, що ви б вважали "вмістом", то я б використовував сутності, але якщо вона повинна бути швидшою і матиме обмежену кількість рядків, і ви не робите кешування на передньому кінці, то спеціальна таблиця добре. Ви також повинні врахувати, чи є ця таблиця "конфігурацією", і в цьому випадку об'єкт конфігурації або об'єкт - це шлях.
mradcliffe

Відповіді:


10

hook_schema()досі використовується з модулів Drupal 8 для створення спеціальних таблиць баз даних, що використовуються з модуля. Навіть користувач та модулі вузлів реалізують це, хоча user_schema()і node_schema()не визначають схему для відповідних об'єктів, які створені по-іншому.

Схема конфігурації не використовується для створення спеціальних таблиць баз даних, якими користується модуль, але описує структуру файлів конфігурації. Файл PDF, знайдений у документації, яку я пов’язував, чітко пояснює зв’язок між файлом конфігурації та його схемою.

скріншот

Суб'єкти вмісту не використовують hook_schema(); Drupal створює для них таблицю баз даних на основі базових полів, які визначає клас сутності вмісту.

Який метод використовувати, залежить від того, що визначає модуль. Це залежить від модуля, який визначає об'єкт вмісту, об'єкт конфігурації або просто використовувати спеціальну таблицю. Модуль може навіть використовувати їх усі.


9

Ви можете використовувати встановлення гака, щоб створити власні таблиці, якщо цього дуже хочете, хоча Drupal має багато інших нестандартних рішень. Але якщо ви хочете прокрутити свій власний, у модулі прикладів є прикладний модуль, який називається dbtng_example: https://www.drupal.org/project/examples , який комплектується маршрутизацією для додавання та видалення власних записів бази даних.

Я рекомендую встановити його та спробувати, тоді ви можете використовувати це як основу для створення власної таблиці баз даних у Drupal 8.

Інший підхід, який слід врахувати, - це створити суть конфігурації або об'єкт вмісту.

Якщо ви використовуєте інструмент командного рядка drupal, є навіть команда для генерування цих "drupal generator: entitet: config" та "drupal generator: entitet: content".

Також у модулі прикладів є config_entity_example та content_entity_example.

З https://www.previousnext.com.au/blog/understanding-drupal-8s-config-entities : "Основна відмінність між об'єктами контенту та конфігурацій полягає в тому, як вони зберігаються, і (на даний момент) конфігураційні об'єкти не підлягають відправці. ".

Є ще деякі нестандартні рішення, такі як модуль config_pages, який дозволяє легко розкручувати місця для зберігання даних на вашому сайті: https://www.drupal.org/project/config_pages

Нещодавно ми використовували їх для одноразових цільових сторінок, створюючи контролер і маршрут. Це має величезну перевагу перед власною таблицею, оскільки ви можете легко додавати нові поля, і ви можете легко використовувати типи даних, такі як зображення та посилання на об'єкти, ви також можете встановити формати форматів полів і завантажити дані, відформатовані за допомогою конструктора перегляду об'єктів config_pages.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.