function Schema::findPrimaryKeyColumns

Same name in this branch
  1. 8.9.x core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php \Drupal\Core\Database\Driver\sqlite\Schema::findPrimaryKeyColumns()
  2. 8.9.x core/lib/Drupal/Core/Database/Driver/mysql/Schema.php \Drupal\Core\Database\Driver\mysql\Schema::findPrimaryKeyColumns()
  3. 8.9.x core/lib/Drupal/Core/Database/Schema.php \Drupal\Core\Database\Schema::findPrimaryKeyColumns()
Same name and namespace in other branches
  1. 9 core/modules/sqlite/src/Driver/Database/sqlite/Schema.php \Drupal\sqlite\Driver\Database\sqlite\Schema::findPrimaryKeyColumns()
  2. 9 core/modules/mysql/src/Driver/Database/mysql/Schema.php \Drupal\mysql\Driver\Database\mysql\Schema::findPrimaryKeyColumns()
  3. 9 core/modules/pgsql/src/Driver/Database/pgsql/Schema.php \Drupal\pgsql\Driver\Database\pgsql\Schema::findPrimaryKeyColumns()
  4. 9 core/lib/Drupal/Core/Database/Schema.php \Drupal\Core\Database\Schema::findPrimaryKeyColumns()
  5. 10 core/modules/sqlite/src/Driver/Database/sqlite/Schema.php \Drupal\sqlite\Driver\Database\sqlite\Schema::findPrimaryKeyColumns()
  6. 10 core/modules/mysql/src/Driver/Database/mysql/Schema.php \Drupal\mysql\Driver\Database\mysql\Schema::findPrimaryKeyColumns()
  7. 10 core/modules/pgsql/src/Driver/Database/pgsql/Schema.php \Drupal\pgsql\Driver\Database\pgsql\Schema::findPrimaryKeyColumns()
  8. 10 core/lib/Drupal/Core/Database/Schema.php \Drupal\Core\Database\Schema::findPrimaryKeyColumns()
  9. 11.x core/modules/sqlite/src/Driver/Database/sqlite/Schema.php \Drupal\sqlite\Driver\Database\sqlite\Schema::findPrimaryKeyColumns()
  10. 11.x core/modules/mysql/src/Driver/Database/mysql/Schema.php \Drupal\mysql\Driver\Database\mysql\Schema::findPrimaryKeyColumns()
  11. 11.x core/modules/pgsql/src/Driver/Database/pgsql/Schema.php \Drupal\pgsql\Driver\Database\pgsql\Schema::findPrimaryKeyColumns()
  12. 11.x core/lib/Drupal/Core/Database/Schema.php \Drupal\Core\Database\Schema::findPrimaryKeyColumns()

Overrides Schema::findPrimaryKeyColumns

File

core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php, line 811

Class

Schema
PostgreSQL implementation of <a href="/api/drupal/core%21lib%21Drupal%21Core%21Database%21Schema.php/class/Schema/8.9.x" title="Provides a base implementation for Database Schema." class="local">\Drupal\Core\Database\Schema</a>.

Namespace

Drupal\Core\Database\Driver\pgsql

Code

protected function findPrimaryKeyColumns($table) {
    if (!$this->tableExists($table)) {
        return FALSE;
    }
    // Fetch the 'indkey' column from 'pg_index' to figure out the order of the
    // primary key.
    // @todo Use 'array_position()' to be able to perform the ordering in SQL
    //   directly when 9.5 is the minimum  PostgreSQL version.
    $result = $this->connection
        ->query("SELECT a.attname, i.indkey FROM pg_index i JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) WHERE i.indrelid = '{" . $table . "}'::regclass AND i.indisprimary")
        ->fetchAllKeyed();
    if (!$result) {
        return [];
    }
    $order = explode(' ', reset($result));
    $columns = array_combine($order, array_keys($result));
    ksort($columns);
    return array_values($columns);
}

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