You are here

public function Select::addField in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Database/Query/Select.php \Drupal\Core\Database\Query\Select::addField()

Adds a field to the list to be SELECTed.

Parameters

$table_alias: The name of the table from which the field comes, as an alias. Generally you will want to use the return value of join() here to ensure that it is valid.

$field: The name of the field.

$alias: The alias for this field. If not specified, one will be generated automatically based on the $table_alias and $field. The alias will be checked for uniqueness, so the requested alias may not be the alias that is assigned in all cases.

Return value

The unique alias that was assigned for this field.

Overrides SelectInterface::addField

2 calls to Select::addField()
Select::fields in core/lib/Drupal/Core/Database/Query/Select.php
Add multiple fields from the same table to be SELECTed.
Select::orderBy in core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
Overrides SelectQuery::orderBy().

File

core/lib/Drupal/Core/Database/Query/Select.php, line 526

Class

Select
Query builder for SELECT statements.

Namespace

Drupal\Core\Database\Query

Code

public function addField($table_alias, $field, $alias = NULL) {

  // If no alias is specified, first try the field name itself.
  if (empty($alias)) {
    $alias = $field;
  }

  // If that's already in use, try the table name and field name.
  if (!empty($this->fields[$alias])) {
    $alias = $table_alias . '_' . $field;
  }

  // If that is already used, just add a counter until we find an unused alias.
  $alias_candidate = $alias;
  $count = 2;
  while (!empty($this->fields[$alias_candidate])) {
    $alias_candidate = $alias . '_' . $count++;
  }
  $alias = $alias_candidate;
  $this->fields[$alias] = [
    'field' => $field,
    'table' => $table_alias,
    'alias' => $alias,
  ];
  return $alias;
}