Drupal - Création d'une table dans une base secondaire

Posté le Jeudi 4 janvier 2018 - 18:24
Dernière mise à jour le Vendredi 26 janvier 2018 - 18:35

Voici comment créer une table dans une base de donnée autre que celle par défaut.

Code à mettre dans votre MODULE.install

Le principe : création d'un « HOOK_schema fake » et utilisation des HOOK_install et HOOK_uninstall pour créer / supprimer cette table en sélectionnant la bonne base.

Le code est pour drupal 8 mais il peut facilement être adapté pour drupal 7.

  1. <?php
  2.  
  3. use \Drupal\Core\Database\Database;
  4.  
  5. function MODULE_schema_autre_db() {
  6. $schema['users'] = [
  7. 'description' => 'Members informations',
  8. 'fields' => [],
  9. 'primary key' => ['id'],
  10. ];
  11.  
  12. $schema['users']['fields']['id'] = [
  13. 'description' => 'ID',
  14. 'type' => 'serial',
  15. 'not null' => TRUE,
  16. 'unsigned' => TRUE,
  17. ];
  18.  
  19. $schema['users']['fields']['uid'] = [
  20. 'description' => 'Drupal ID',
  21. 'type' => 'int',
  22. 'not null' => TRUE,
  23. 'unsigned' => TRUE,
  24. ];
  25.  
  26. $schema['users']['fields']['mail'] = [
  27. 'type' => 'varchar',
  28. 'length' => 255,
  29. ];
  30. return $schema;
  31. }
  32.  
  33.  
  34. function MODULE_install() {
  35. Database::setActiveConnection('NOM_DB');
  36. $schema = MODULE_schema_autre_db();
  37. foreach ($schema as $name => $table) {
  38. Database::getConnection()->schema()->createTable($name, $table);
  39. }
  40. Database::setActiveConnection();
  41. }
  42.  
  43. function MODULE_uninstall() {
  44. Database::setActiveConnection('NOM_DB');
  45. $schema = MODULE_schema_autre_db();
  46. foreach ($schema as $name => $table) {
  47. Database::getConnection()->schema()->dropTable($name);
  48. }
  49. Database::setActiveConnection();
  50. }

 

 

 

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...