Scroll
9.11.2. Agregar, actualizar y eliminar entidades mediante programación
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);