function DatabaseSchema_sqlite::findTablesD8

Overrides DatabaseSchema::findTablesD8

File

includes/database/sqlite/schema.inc, line 690

Class

DatabaseSchema_sqlite

Code

public function findTablesD8($table_expression) {
    $tables = array();
    // The SQLite implementation doesn't need to use the same filtering strategy
    // as the parent one because individually prefixed tables live in their own
    // schema (database), which means that neither the main database nor any
    // attached one will contain a prefixed table name, so we just need to loop
    // over all known schemas and filter by the user-supplied table expression.
    $attached_dbs = $this->connection
        ->getAttachedDatabases();
    foreach ($attached_dbs as $schema) {
        // Can't use query placeholders for the schema because the query would
        // have to be :prefixsqlite_master, which does not work. We also need to
        // ignore the internal SQLite tables.
        $result = db_query("SELECT name FROM " . $schema . ".sqlite_master WHERE type = :type AND name LIKE :table_name AND name NOT LIKE :pattern", array(
            ':type' => 'table',
            ':table_name' => $table_expression,
            ':pattern' => 'sqlite_%',
        ));
        $tables += $result->fetchAllKeyed(0, 0);
    }
    return $tables;
}

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