function DbDumpCommand::generateScript

Same name in other branches
  1. 9 core/lib/Drupal/Core/Command/DbDumpCommand.php \Drupal\Core\Command\DbDumpCommand::generateScript()
  2. 10 core/lib/Drupal/Core/Command/DbDumpCommand.php \Drupal\Core\Command\DbDumpCommand::generateScript()
  3. 11.x core/lib/Drupal/Core/Command/DbDumpCommand.php \Drupal\Core\Command\DbDumpCommand::generateScript()

Generates the database script.

Parameters

\Drupal\Core\Database\Connection $connection: The database connection to use.

array $schema_only: Table patterns for which to only dump the schema, no data.

Return value

string The PHP script.

1 call to DbDumpCommand::generateScript()
DbDumpCommand::execute in core/lib/Drupal/Core/Command/DbDumpCommand.php

File

core/lib/Drupal/Core/Command/DbDumpCommand.php, line 77

Class

DbDumpCommand
Provides a command to dump the current database to a script.

Namespace

Drupal\Core\Command

Code

protected function generateScript(Connection $connection, array $schema_only = []) {
    $tables = '';
    $schema_only_patterns = [];
    foreach ($schema_only as $match) {
        $schema_only_patterns[] = '/^' . $match . '$/';
    }
    foreach ($this->getTables($connection) as $table) {
        $schema = $this->getTableSchema($connection, $table);
        // Check for schema only.
        if (empty($schema_only_patterns) || preg_replace($schema_only_patterns, '', $table)) {
            $data = $this->getTableData($connection, $table);
        }
        else {
            $data = [];
        }
        $tables .= $this->getTableScript($table, $schema, $data);
    }
    $script = $this->getTemplate();
    // Substitute in the version.
    $script = str_replace('{{VERSION}}', \Drupal::VERSION, $script);
    // Substitute in the tables.
    $script = str_replace('{{TABLES}}', trim($tables), $script);
    return trim($script);
}

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