You are here

function db_add_field in Drupal 8

Same name and namespace in other branches
  1. 6 includes/database.mysql-common.inc \db_add_field()
  2. 6 includes/database.pgsql.inc \db_add_field()
  3. 7 includes/database/database.inc \db_add_field()

Adds a new field to a table.

Parameters

$table: Name of the table to be altered.

$field: Name of the field to be added.

array $spec: The field specification array, as taken from a schema definition. The specification may also contain the key 'initial'; the newly-created field will be set to the value of the key in all rows. This is most useful for creating NOT NULL columns with no default value in existing tables.

array $keys_new: (optional) Keys and indexes specification to be created on the table along with adding the field. The format is the same as a table specification, but without the 'fields' element. If you are adding a type 'serial' field, you MUST specify at least one key or index including it in this array. See \Drupal\Core\Database\Schema::changeField() for more explanation why.

Deprecated

in drupal:8.0.0 and is removed from drupal:9.0.0. Instead, get a database connection injected into your service from the container, get its schema driver, and call addField() on it. For example, $injected_database->schema()->addField($table, $field, $spec, $keys_new);

See also

https://www.drupal.org/node/2993033

\Drupal\Core\Database\Schema::addField()

\Drupal\Core\Database\Schema::changeField()

Related topics

1 call to db_add_field()
DatabaseLegacyTest::testDbAddField in core/tests/Drupal/KernelTests/Core/Database/DatabaseLegacyTest.php
Tests deprecation of the db_add_field() function.

File

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

Code

function db_add_field($table, $field, $spec, $keys_new = []) {
  @trigger_error('db_add_field() is deprecated in drupal:8.0.0. It will be removed from drupal:9.0.0. Instead, get a database connection injected into your service from the container, get its schema driver, and call addField() on it. For example, $injected_database->schema()->addField($table, $field, $spec, $keys_new). See https://www.drupal.org/node/2993033', E_USER_DEPRECATED);
  return Database::getConnection()
    ->schema()
    ->addField($table, $field, $spec, $keys_new);
}