Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll
04/05/2025, by Ivan

Menu

9.11.2. Añadir, actualizar y eliminar entidades programáticamente

Trabajar con entidades en Drupal está unificado y todas las operaciones CRUD (crear, leer, actualizar y eliminar) siguen un mismo patrón para todos los tipos de entidades. En este artículo aprenderás cómo manipular entidades desde tu propio código.

Crear un nodo programáticamente

use \Drupal\node\Entity\Node;

$node = Node::create([
  'type'  => 'article',
  'title' => 'Prueba de Druplicon',
]);
$node->save();

También puedes agregar campos personalizados después de la creación:

$node = Node::create([
  'type'  => 'article',
  'title' => 'Prueba de Druplicon',
]);
$node->field_text->value = 'Texto simple';
$node->save();

Otra forma más general de crear una entidad utilizando claves del EntityTypeDefinition:

$node_entity_type = \Drupal::entityTypeManager()->getDefinition('node');
$node = new \Drupal\node\Entity\Node([
  $node_entity_type->getKey('bundle') => 'movie',
  $node_entity_type->getKey('label')  => 'Foo',
  'field_release_date' => '1/1/2015',
]);
$node->save();

Actualizar una entidad programáticamente

$nid = 234;
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
$node = $node_storage->load($nid);

$node->title = 'Nuevo título';
$node->field_text = 'Texto actualizado';
$node->save();

Consulta el artículo anterior para más ejemplos sobre cómo trabajar con los campos de una entidad:

9.11.1. Trabajo con campos de entidad programáticamente

Eliminar una entidad programáticamente

$nid = 123;
$node = \Drupal\node\Entity\Node::load($nid);
$node->delete();

Cargar múltiples entidades programáticamente

$nids = \Drupal::database()->select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  ->addTag('node_access')
  ->execute()
  ->fetchCol();

$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);

Eliminar múltiples entidades programáticamente

$result = \Drupal::entityQuery('node')
  ->condition('created', strtotime('-30 days'), '=')
  ->execute();

$storage_handler = \Drupal::entityTypeManager()->getStorage('node');
$entities = $storage_handler->loadMultiple($result);
$storage_handler->delete($entities);