| name | drupal-entity-api |
| description | Drupal Entity API — loading, creating, updating, and deleting entities using entity_type.manager. Node, User, Term, Media patterns. |
Drupal Entity API
Loading Entities
$node = $this->entityTypeManager->getStorage('node')->load($nid);
$nodes = $this->entityTypeManager->getStorage('node')->loadMultiple([1, 2, 3]);
$nodes = $this->entityTypeManager->getStorage('node')->loadByProperties([
'type' => 'article',
'status' => 1,
'uid' => $uid,
]);
$user = $this->entityTypeManager->getStorage('user')->load($uid);
$term = $this->entityTypeManager->getStorage('taxonomy_term')->load($tid);
$media = $this->entityTypeManager->getStorage('media')->load($mid);
Entity Query
$query = $this->entityTypeManager->getStorage('node')->getQuery()
->accessCheck(TRUE)
->condition('type', 'article')
->condition('status', 1)
->condition('field_tags', $tid)
->sort('created', 'DESC')
->range(0, 10);
$nids = $query->execute();
$nodes = $this->entityTypeManager->getStorage('node')->loadMultiple($nids);
Creating Entities
$node = $this->entityTypeManager->getStorage('node')->create([
'type' => 'article',
'title' => 'My Article',
'status' => 1,
'uid' => $this->currentUser->id(),
'field_body' => [
'value' => 'Content here',
'format' => 'basic_html',
],
]);
$node->save();
$term = $this->entityTypeManager->getStorage('taxonomy_term')->create([
'vid' => 'tags',
'name' => 'New Tag',
]);
$term->save();
Updating Entities
$node = $this->entityTypeManager->getStorage('node')->load($nid);
if ($node instanceof NodeInterface) {
$node->set('title', 'Updated Title');
$node->set('field_body', ['value' => 'New content', 'format' => 'basic_html']);
$node->save();
}
Deleting Entities
$node = $this->entityTypeManager->getStorage('node')->load($nid);
if ($node) {
$node->delete();
}
$storage = $this->entityTypeManager->getStorage('node');
$nodes = $storage->loadMultiple($nids);
$storage->delete($nodes);
Accessing Field Values
$title = $node->get('title')->value;
$status = $node->get('status')->value;
$body = $node->get('body')->value;
$format = $node->get('body')->format;
$tid = $node->get('field_tags')->target_id;
$term = $node->get('field_tags')->entity;
foreach ($node->get('field_images') as $item) {
$fid = $item->target_id;
$file = $item->entity;
}
if (!$node->get('field_image')->isEmpty()) { ... }
Access Checking
$query->accessCheck(TRUE);
if ($node->access('view', $account)) { ... }
if ($node->access('update', $account)) { ... }
Inject EntityTypeManager
public function __construct(
private readonly EntityTypeManagerInterface $entityTypeManager,
) {}