function ModuleInstaller::uninstallSchema

Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/Extension/ModuleInstaller.php \Drupal\Core\Extension\ModuleInstaller::uninstallSchema()
  2. 10 core/lib/Drupal/Core/Extension/ModuleInstaller.php \Drupal\Core\Extension\ModuleInstaller::uninstallSchema()
  3. 9 core/lib/Drupal/Core/Extension/ModuleInstaller.php \Drupal\Core\Extension\ModuleInstaller::uninstallSchema()

Removes all tables defined in a module's hook_schema().

@internal

Parameters

string $module: The module for which the tables will be removed.

1 call to ModuleInstaller::uninstallSchema()
ModuleInstaller::uninstall in core/lib/Drupal/Core/Extension/ModuleInstaller.php
Uninstalls a given list of modules.

File

core/lib/Drupal/Core/Extension/ModuleInstaller.php, line 816

Class

ModuleInstaller
Default implementation of the module installer.

Namespace

Drupal\Core\Extension

Code

protected function uninstallSchema(string $module) : void {
  $schemaDefinition = $this->invoke($module, 'schema') ?? [];
  if ($schemaDefinition instanceof Schema) {
    $table_names = $schemaDefinition->tableNames();
  }
  else {
    if (count($schemaDefinition) !== 0) {
      @trigger_error("Not returning a Schema object from {$module}_schema() to " . __METHOD__ . " is deprecated in drupal:12.1.0 and is removed in drupal:13.0.0. See https://www.drupal.org/node/3557405", E_USER_DEPRECATED);
    }
    $table_names = array_keys($schemaDefinition);
  }
  $schema = $this->connection
    ->schema();
  foreach ($table_names as $table) {
    if ($schema->tableExists($table)) {
      $schema->dropTable($table);
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.