logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll
27/05/2025, by Ivan

Die Arbeit mit Entitäten in Drupal ist vereinheitlicht, und alle CRUD-Operationen sind für alle Entitäten gleich. In diesem Artikel werden wir herausfinden, wie man mit Entitäten im eigenen Code arbeitet.

Schauen wir uns zuerst einfache Beispiele an.

Knoten programmatisch erstellen

use \Drupal\node\Entity\Node;

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

Um einen Knoten zu erstellen, müssen alle erforderlichen Felder hinzugefügt werden, standardmäßig ist dies nur das Feld Titel. Nach der Erstellung kann man auch auf das Knotenobjekt zugreifen:

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

Die Methode create() befindet sich in der Node.php Klasse; wenn ein Entitätstyp eine eigene create()-Methode hat, ist es am besten, diese zu verwenden. Es gibt jedoch auch universelle Wege, eine Entität zu erstellen.

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

Am Ende speichern wir die Entität mit der save()-Methode.

Knoten (Entität) programmatisch aktualisieren

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

$node->title = 'Neuer Titel';
$node->field_text = 'Text';

$node->save();

Details zum Bearbeiten von Entitätsfeldern haben wir im vorherigen Artikel behandelt:

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

Knoten (Entität) programmatisch löschen

Wenn Sie einen Knoten löschen wollen, können Sie die delete()-Methode verwenden:

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

Mehrere Knoten (Entitäten) programmatisch erstellen

Wenn Sie viele Knoten laden müssen, ist es ineffizient, sie einzeln zu laden, da jeder Knoten Felder hat und viele SQL-Abfragen nötig sind. Es ist viel schneller, alle Knoten auf einmal zu laden:

$nids = db_select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  // Das node_access Tag prüft Zugriffsrechte.
  ->addTag('node_access')
  ->execute()
  ->fetchCol();

$nodes = Node::loadMultiple($nids);

Mehrere Knoten (Entitäten) programmatisch löschen

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