Drupal - Création d'une table dans une base secondaire
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.
use \Drupal\Core\Database\Database; function MODULE_schema_autre_db() { $schema['users'] = [ 'description' => 'Members informations', 'fields' => [], 'primary key' => ['id'], ]; $schema['users']['fields']['id'] = [ 'description' => 'ID', 'type' => 'serial', 'not null' => TRUE, 'unsigned' => TRUE, ]; $schema['users']['fields']['uid'] = [ 'description' => 'Drupal ID', 'type' => 'int', 'not null' => TRUE, 'unsigned' => TRUE, ]; $schema['users']['fields']['mail'] = [ 'type' => 'varchar', 'length' => 255, ]; return $schema; } function MODULE_install() { Database::setActiveConnection('NOM_DB'); $schema = MODULE_schema_autre_db(); foreach ($schema as $name => $table) { Database::getConnection()->schema()->createTable($name, $table); } Database::setActiveConnection(); } function MODULE_uninstall() { Database::setActiveConnection('NOM_DB'); $schema = MODULE_schema_autre_db(); foreach ($schema as $name => $table) { Database::getConnection()->schema()->dropTable($name); } Database::setActiveConnection(); }