protected function SqlContentEntityStorage::saveRevision in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php \Drupal\Core\Entity\Sql\SqlContentEntityStorage::saveRevision()
Saves an entity revision.
Parameters
\Drupal\Core\Entity\ContentEntityInterface $entity: The entity object.
Return value
int The revision id.
1 call to SqlContentEntityStorage::saveRevision()
- SqlContentEntityStorage::doSaveFieldItems in core/
lib/ Drupal/ Core/ Entity/ Sql/ SqlContentEntityStorage.php - Writes entity field values to the storage.
File
- core/
lib/ Drupal/ Core/ Entity/ Sql/ SqlContentEntityStorage.php, line 1020 - Contains \Drupal\Core\Entity\Sql\SqlContentEntityStorage.
Class
- SqlContentEntityStorage
- A content entity database storage implementation.
Namespace
Drupal\Core\Entity\SqlCode
protected function saveRevision(ContentEntityInterface $entity) {
$record = $this
->mapToStorageRecord($entity
->getUntranslated(), $this->revisionTable);
$entity
->preSaveRevision($this, $record);
if ($entity
->isNewRevision()) {
$insert_id = $this->database
->insert($this->revisionTable, array(
'return' => Database::RETURN_INSERT_ID,
))
->fields((array) $record)
->execute();
// Even if this is a new revision, the revision ID key might have been
// set in which case we should not override the provided revision ID.
if (!isset($record->{$this->revisionKey})) {
$record->{$this->revisionKey} = $insert_id;
}
if ($entity
->isDefaultRevision()) {
$this->database
->update($this->entityType
->getBaseTable())
->fields(array(
$this->revisionKey => $record->{$this->revisionKey},
))
->condition($this->idKey, $record->{$this->idKey})
->execute();
}
}
else {
$this->database
->update($this->revisionTable)
->fields((array) $record)
->condition($this->revisionKey, $record->{$this->revisionKey})
->execute();
}
// Make sure to update the new revision key for the entity.
$entity->{$this->revisionKey}->value = $record->{$this->revisionKey};
return $record->{$this->revisionKey};
}