8.5.x database.inc db_transaction($name = NULL, array $options = [])
8.0.x database.inc db_transaction($name = NULL, array $options = array())
8.1.x database.inc db_transaction($name = NULL, array $options = array())
8.2.x database.inc db_transaction($name = NULL, array $options = array())
8.3.x database.inc db_transaction($name = NULL, array $options = [])
8.4.x database.inc db_transaction($name = NULL, array $options = [])
8.6.x database.inc db_transaction($name = NULL, array $options = [])
7.x database.inc db_transaction($name = NULL, array $options = array())

Returns a new transaction object for the active database.

Parameters

string $name: Optional name of the transaction.

array $options: An array of options to control how the transaction operates:

  • target: The database target name.

Return value

\Drupal\Core\Database\Transaction A new Transaction 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 startTransaction() on it. For example, $injected_database->startTransaction($name);

See also

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

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

Related topics

5 calls to db_transaction()
MenuRouterRebuildSubscriber::menuLinksRebuild in core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php
Perform menu-specific rebuilding.
TransactionTest::testTransactionStacking in core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php
Tests transaction stacking, commit, and rollback.
TransactionTest::testTransactionWithDdlStatement in core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php
Tests the compatibility of transactions with DDL statements.
TransactionTest::transactionInnerLayer in core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php
Creates an "inner layer" transaction.
TransactionTest::transactionOuterLayer in core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php
Encapsulates a transaction's "inner layer" with an "outer layer".

File

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

Code

function db_transaction($name = NULL, array $options = []) {
  if (empty($options['target'])) {
    $options['target'] = 'default';
  }
  return Database::getConnection($options['target'])
    ->startTransaction($name);
}