logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaringâť—

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

âť—Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll
16/10/2025, by Ivan

Werken met entiteiten in Drupal is gestandaardiseerd, en alle CRUD-bewerkingen (Create, Read, Update, Delete) verlopen op dezelfde manier voor alle entiteitstypen. In dit artikel bekijken we hoe we met entiteiten kunnen werken in aangepaste code. 

Laten we beginnen met eenvoudige voorbeelden.

Node programmatisch aanmaken 

use \Drupal\node\Entity\Node;
 
$node = Node::create([
  'type'        => 'article',
  'title'       => 'Druplicon test',
]);
$node->save();

Om een node aan te maken, moet je alle verplichte velden invullen — standaard is dat alleen het veld Title. Je kunt ook toegang krijgen tot het node-object na het aanmaken:

$node = Node::create([
  'type'        => 'article',
  'title'       => 'Druplicon test',
]);
$node->field_text->value = 'Eenvoudige tekst';
$node->save();

De methode create() bevindt zich in de klasse Node.php. Als een entiteitstype zijn eigen create()-methode heeft, is het beter om die te gebruiken. Er bestaan echter ook universele manieren om een entiteit aan te maken:

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

Uiteindelijk slaan we de entiteit op met de methode save().

Node (entiteit) programmatisch bijwerken

$nid = 234; 
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
$node = $node_storage->load($nid);
 
$node->title = 'Nieuwe titel';
$node->field_text = 'tekst';
 
$node->save();

Meer details over het bewerken van entiteitsvelden vind je in het vorige artikel:

http://drupalbook.org/drupal/9111-work-entity-fields-programmatically

Node (entiteit) programmatisch verwijderen

Als je slechts één node wilt verwijderen, kan dat eenvoudig met de methode delete():

$nid = 123;
$node = node_load($nid);
$node->delete();

Meerdere nodes (entiteiten) programmatisch aanmaken

Wanneer je veel nodes moet laden, is het inefficiĂ«nt om dat één voor één te doen, omdat elke node meerdere velden bevat en het ophalen van de gegevens meerdere SQL-query’s vereist. Het is veel sneller om alle nodes in één keer te laden:

$nids = db_select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  // De tag node_access controleert toegangsrechten.
  ->addTag('node_access')
  ->execute()
  ->fetchCol();
 
$nodes = Node::loadMultiple($nids);

Meerdere nodes (entiteiten) programmatisch verwijderen

$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);