Entity löschen
Eingetragen von torfnase (1525)
am 23.03.2019 - 17:52 Uhr in
am 23.03.2019 - 17:52 Uhr in
Löschen eine Entitys in Drupal 8 funktioniert offenbar so:
$entity = \Drupal::entityTypeManager()->getStorage($entity_type)->load($entity_id);
$entity->delete();
Alle andere Funktionen scheinen mir deprecated zu sein.
Ich frage mich, warum man erst ein Objekt laden muss, damit man es löschen kann.
Habe ich da was übersehen ?
Gruß
Berthold
- Anmelden oder Registrieren um Kommentare zu schreiben
Entitäten haben Typen und
am 24.03.2019 - 12:09 Uhr
Entitäten haben Typen und laufende Nummern. Stell dir vor, du lädst die Entität nicht und löscht einfach. Woher soll der Code denn wissen, welche Entität gelöscht werden soll.
Wenn ich mir vorstelle, Ich sage Drupal, es soll meine Regenjacke löschen und das Miststück löscht stattdessen meine Ray Ban, weil ich ihm nur gesagt habe, es soll eine Entität vom Typ Kleidungsstück löschen, dann wäre mir persönlich das zu teuer.
https://drupal-tv.de
Drupal sehen und lernen
Der Code weiß immer ganz
am 24.03.2019 - 12:35 Uhr
Der Code weiß immer ganz genau, welche Entity er löschen soll.
Selbstverständlich muss man zum Löschen den Type und die ID angeben.
Aber meine Frage war ja, warum die Entity erst laden und dann löschen.
In Drupal 7 gab es die Funktion:
entity_delete_multiple($entity_type, $ids)
meiner Meinung nach hat die nicht erst die Entitys geladen und dann gelöscht.
Drupal Video-Tutorials
Weiß nicht.Damit der Array
am 24.03.2019 - 13:13 Uhr
Weiß nicht.
Damit der Array erzeugt und geladen werden kann, auf den die Funktion angewendet werden kann. Oder, damit die Funktion Wind davon bekommt.
Die alte Methode gibt's noch, die fliegt aber spätestens mit 9 raus.
https://api.drupal.org/api/drupal/core%21includes%21entity.inc/function/...
Wiso genau das so ist, könnte ich auf die schnelle aber nicht rausfinden. Vielleicht muss doctrine wirklich manuell über das object informiert werden, damit es verarbeitet werden kann. Das ist aber schlicht eine Vermutung. So gut verstehe ich Symphony jetzt auch nicht.
// Eine Entität löschen.
$entity = \Drupal::entityTypeManager()->getStorage('node')->load(1);
$entity->delete();
// Mehrere Entitäten löschen.
\Drupal::entityTypeManager()->getStorage($entity_type)->delete([$id1 => $entity1, $id2 => $entity2]);
Oder einfach, weil Symphony so funktioniert.
https://drupal-tv.de
Drupal sehen und lernen