Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function DatabaseStatementPrefetch::current

Return the current row formatted according to the current fetch style.

This is the core method of this class. It grabs the value at the current array position in $this->data and format it according to $this->fetchStyle and $this->fetchMode.

Attributes

#[\ReturnTypeWillChange]

Return value

The current row formatted as requested.

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 271

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'])) {
 // Verify the current db connection to avoid this code being called
 // in an inappropriate context.
 $db_connection_options = Database ::getConnection ()->getConnectionOptions ();
 $defaults = array(
 'sqlite',
 'oracle',
 );
 $extras = variable_get ('database_statement_prefetch_valid_db_drivers', array());
 $valid_db_drivers = array_merge ($defaults, $extras);
 if (!in_array ($db_connection_options['driver'], $valid_db_drivers)) {
 throw new BadMethodCallException();
 }
 $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;
 }
 }
 }
}

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