Vous pouvez utiliser l'installation par crochet pour créer vos propres tables, si vous le souhaitez vraiment, bien que Drupal propose de nombreuses autres solutions prêtes à l'emploi. Mais si vous voulez rouler le vôtre, il y a un module d'exemple, appelé dbtng_example, dans le module d'exemples: https://www.drupal.org/project/examples , avec un routage pour ajouter et supprimer vos entrées de base de données personnalisées.
Je vous recommande de l'installer et de l'essayer, vous pouvez ensuite l'utiliser comme base pour créer votre propre table de base de données dans Drupal 8.
Une autre approche à considérer consiste à créer une entité de configuration ou une entité de contenu.
Si vous utilisez l'outil de ligne de commande drupal, il y a même une commande pour générer ces "drupal generate: entity: config" et "drupal generate: entity: content".
Toujours dans le module d'exemples, il y a config_entity_example et content_entity_example.
De https://www.previousnext.com.au/blog/understanding-drupal-8s-config-entities : "La principale différence entre le contenu et les entités de configuration est la façon dont elles sont stockées et (pour le moment) les entités de configuration ne sont pas modifiables ".
Il existe d'autres solutions plus prêtes à l'emploi, telles que le module config_pages qui vous permettent de créer facilement des emplacements pour stocker des données sur votre site:
https://www.drupal.org/project/config_pages
Nous les avons récemment utilisés pour des pages de destination uniques, en créant un contrôleur et un itinéraire. Cela a un énorme avantage sur une table personnalisée car vous pouvez facilement ajouter de nouveaux champs et vous pouvez facilement utiliser des types de données tels que des images et des références d'entité, vous pouvez également définir des formateurs de champ et charger les données formatées à l'aide du générateur de vue d'entité config_pages.
hook_schema
est toujours le moyen de créer des tableaux personnalisés dans Drupal 8 qui ne sont pas décrits par des entités de contenu ou des champs . Si votre table personnalisée est quelque chose que vous considéreriez comme du «contenu», j'utiliserais des entités, mais si elle doit être plus rapide et avoir un nombre limité de lignes et que vous ne faites pas de mise en cache sur le frontal, alors une table personnalisée c'est bien. Vous devez également déterminer si cette table est une "configuration", auquel cas une entité ou un objet de configuration est la solution.