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.
<?php
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();
}
Ajouter un commentaire