public function DatabaseStorageControllerNG::create

Overrides DatabaseStorageController::create().

Parameters

array $values: An array of values to set, keyed by field name. The value has to be the plain value of an entity field, i.e. an array of field items. If no numerically indexed array is given, the value will be set for the first field item. For example, to set the first item of a 'name' field one can pass:

$values = array(
  'name' => array(
    0 => array(
      'value' => 'the name',
    ),
  ),
);

or

$values = array(
  'name' => array(
    'value' => 'the name',
  ),
);

If the 'name' field is a defined as 'string_item' which supports setting its value by a string, it's also possible to just pass the name string:

$values = array(
  'name' => 'the name',
);

Return value

\Drupal\Core\Entity\EntityInterface A new entity object.

Overrides DatabaseStorageController::create

5 calls to DatabaseStorageControllerNG::create()
CommentStorageController::create in drupal/core/modules/comment/lib/Drupal/comment/CommentStorageController.php
Overrides Drupal\Core\Entity\DatabaseStorageControllerNG::create().
EntityTestStorageController::create in drupal/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestStorageController.php
Overrides DatabaseStorageController::create().
FeedStorageController::create in drupal/core/modules/aggregator/lib/Drupal/aggregator/FeedStorageController.php
Overrides Drupal\Core\Entity\DataBaseStorageController::create().
ItemStorageController::create in drupal/core/modules/aggregator/lib/Drupal/aggregator/ItemStorageController.php
Overrides Drupal\Core\Entity\DataBaseStorageController::create().
TermStorageController::create in drupal/core/modules/taxonomy/lib/Drupal/taxonomy/TermStorageController.php
Overrides Drupal\Core\Entity\DatabaseStorageController::create().
7 methods override DatabaseStorageControllerNG::create()
CommentStorageController::create in drupal/core/modules/comment/lib/Drupal/comment/CommentStorageController.php
Overrides Drupal\Core\Entity\DatabaseStorageControllerNG::create().
EntityTestStorageController::create in drupal/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestStorageController.php
Overrides DatabaseStorageController::create().
FeedStorageController::create in drupal/core/modules/aggregator/lib/Drupal/aggregator/FeedStorageController.php
Overrides Drupal\Core\Entity\DataBaseStorageController::create().
ItemStorageController::create in drupal/core/modules/aggregator/lib/Drupal/aggregator/ItemStorageController.php
Overrides Drupal\Core\Entity\DataBaseStorageController::create().
NodeStorageController::create in drupal/core/modules/node/lib/Drupal/node/NodeStorageController.php
Overrides Drupal\Core\Entity\DatabaseStorageController::create().

... See full list

File

drupal/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php, line 100
Contains \Drupal\Core\Entity\DatabaseStorageControllerNG.

Class

DatabaseStorageControllerNG
Implements Field API specific enhancements to the DatabaseStorageController class.

Namespace

Drupal\Core\Entity

Code

public function create(array $values) {

  // We have to determine the bundle first.
  $bundle = FALSE;
  if ($this->bundleKey) {
    if (!isset($values[$this->bundleKey])) {
      throw new EntityStorageException(t('Missing bundle for entity type @type', array(
        '@type' => $this->entityType,
      )));
    }
    $bundle = $values[$this->bundleKey];
  }
  $entity = new $this->entityClass(array(), $this->entityType, $bundle);

  // Set all other given values.
  foreach ($values as $name => $value) {
    $entity->{$name} = $value;
  }

  // Assign a new UUID if there is none yet.
  if ($this->uuidKey && !isset($entity->{$this->uuidKey}->value)) {
    $uuid = new Uuid();
    $entity->{$this->uuidKey} = $uuid
      ->generate();
  }

  // Modules might need to add or change the data initially held by the new
  // entity object, for instance to fill-in default values.
  $this
    ->invokeHook('create', $entity);
  return $entity;
}