4 calls to DatabaseStatementPrefetch::current()
DatabaseStatementPrefetch::fetch in includes/database/prefetch.inc
DatabaseStatementPrefetch::fetchAll in includes/database/prefetch.inc
DatabaseStatementPrefetch::fetchAllAssoc in includes/database/prefetch.inc
Returns the result set as an associative array keyed by the given field.
DatabaseStatementPrefetch::fetchObject in includes/database/prefetch.inc

File

includes/database/prefetch.inc, line 272
Database interface code for engines that need complete control over their result sets. For example, SQLite will prefix some column names by the name of the table. We post-process the data, by renaming the column names using the same convention as…

Class

DatabaseStatementPrefetch
An implementation of DatabaseStatementInterface that prefetches all data.

Code

public function current() {
  if (isset($this->currentRow)) {
    switch ($this->fetchStyle) {
      case PDO::FETCH_ASSOC:
        return $this->currentRow;
      case PDO::FETCH_BOTH:

        // PDO::FETCH_BOTH returns an array indexed by both the column name
        // and the column number.
        return $this->currentRow + array_values($this->currentRow);
      case PDO::FETCH_NUM:
        return array_values($this->currentRow);
      case PDO::FETCH_LAZY:

      // We do not do lazy as everything is fetched already. Fallback to
      // PDO::FETCH_OBJ.
      case PDO::FETCH_OBJ:
        return (object) $this->currentRow;
      case PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE:
        $class_name = array_shift($this->currentRow);

      // Deliberate no break.
      case PDO::FETCH_CLASS:
        if (!isset($class_name)) {
          $class_name = $this->fetchOptions['class'];
        }
        if (count($this->fetchOptions['constructor_args'])) {
          $reflector = new ReflectionClass($class_name);
          $result = $reflector
            ->newInstanceArgs($this->fetchOptions['constructor_args']);
        }
        else {
          $result = new $class_name();
        }
        foreach ($this->currentRow as $k => $v) {
          $result->{$k} = $v;
        }
        return $result;
      case PDO::FETCH_INTO:
        foreach ($this->currentRow as $k => $v) {
          $this->fetchOptions['object']->{$k} = $v;
        }
        return $this->fetchOptions['object'];
      case PDO::FETCH_COLUMN:
        if (isset($this->columnNames[$this->fetchOptions['column']])) {
          return $this->currentRow[$k][$this->columnNames[$this->fetchOptions['column']]];
        }
        else {
          return;
        }
    }
  }
}