8.3.x database.inc db_select($table, $alias = NULL, array $options = [])
8.0.x database.inc db_select($table, $alias = NULL, array $options = array())
8.1.x database.inc db_select($table, $alias = NULL, array $options = array())
8.2.x database.inc db_select($table, $alias = NULL, array $options = array())
8.4.x database.inc db_select($table, $alias = NULL, array $options = [])
7.x database.inc db_select($table, $alias = NULL, array $options = array())

Returns a new SelectQuery object for the active database.

Parameters

string|\Drupal\Core\Database\Query\SelectInterface $table: The base table for this query. May be a string or another SelectInterface object. If a SelectInterface object is passed, it will be used as a subselect.

string $alias: (optional) The alias for the base table of this query.

array $options: (optional) An array of options to control how the query operates.

Return value

\Drupal\Core\Database\Query\Select A new Select object for this connection.

Deprecated

as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get a database connection injected into your service from the container and call select() on it. For example, $injected_database->select($table, $alias, $options);

See also

\Drupal\Core\Database\Connection::select()

\Drupal\Core\Database\Connection::defaultOptions()

Related topics

135 calls to db_select()
ActiveTopicsBlock::buildForumQuery in core/modules/forum/src/Plugin/Block/ActiveTopicsBlock.php
Builds the select query to use for this forum block.
AlterTest::testAlterChangeConditional in core/tests/Drupal/KernelTests/Core/Database/AlterTest.php
Tests that we can alter a query's conditionals.
AlterTest::testAlterChangeFields in core/tests/Drupal/KernelTests/Core/Database/AlterTest.php
Tests that we can alter the fields of a query.
AlterTest::testAlterExpression in core/tests/Drupal/KernelTests/Core/Database/AlterTest.php
Tests that we can alter expressions in the query.
AlterTest::testAlterRemoveRange in core/tests/Drupal/KernelTests/Core/Database/AlterTest.php
Tests that we can remove a range() value from a query.

... See full list

File

core/includes/database.inc, line 291
Core systems for the database layer.

Code

function db_select($table, $alias = NULL, array $options = array()) {
  if (empty($options['target'])) {
    $options['target'] = 'default';
  }
  return Database::getConnection($options['target'])->select($table, $alias, $options);
}

Comments

robpowell’s picture

This is how I did it

$query = \Drupal::database()->select('yamlform_submission_data', 'y1');
$query->addField('y2', 'value');
$query->join('yamlform_submission_data', 'y2', 'y1.sid = y2.sid');
$query->condition('y1.yamlform_id', $yamlform_id);
$query->range(0, 1);

$yamlform_id = $query->execute()->fetchField();
roynilanjan’s picture

Though this is a better option instead use directly *db_select* other any-other crud operations,but this is not fully injected behavior as of symfony container , should have

class someclass {
  function __construct(DBinterface $di) {
    $this->variable = $di;
  }
  function anyfunction($ContainerInterface $ci) {
    return new static($ci->get('service-name'));
  }

  // then we can write as,
  function action() {
    $this->variable->select();
  }
}

Though above one is a prototype concept rather a complete working code, probably we need to write a own service container using the existing core crud operation of \Drupal