it-swarm.com.de

Entfernen Sie den Entitätstyp ohne Deinstallation des Moduls

Ich habe den Entitätstyp my_entity in meinem Modul erstellt. Aber jetzt brauche ich diese Entität nicht mehr und möchte sie ohne Deinstallation des Moduls vollständig entfernen. Ich möchte sowohl die Definition als auch alle datenbankbezogenen Tabellen oder Daten entfernen. Ich dachte darüber nach, \Drupal::entityDefinitionUpdateManager->uninstallEntityType('my_entity') in hook_update_N, aber ich kann es nicht verwenden, da die Definition der Entität entfernt wird.

Könnte mir jemand helfen und Ratschläge geben, wie man sowohl Definitions- als auch Datenbankdaten löscht?

[~ # ~] upd [~ # ~] : Ich habe auf drupal.org ein Problem zu diesem Thema erstellt https: // www. drupal.org/node/2655162

4
Maria Kvitova

Das Argument für entityDefinitionUpdateManager-> uninstallEntityType () ist eine EntityTypeInterface, keine Zeichenfolge.

Drupal speichert den letzten bekannten Status eines Entitätstyps. Sie können ihn folgendermaßen abrufen:

$entity_update_manager = \Drupal::entityDefinitionUpdateManager();
$entity_type = $entity_update_manager->getEntityType('your_entity_type_id');
$entity_update_manager->uninstallEntityType($entity_type);

Beachten Sie, dass hierfür der Aktualisierungsmanager für Enitty-Definitionen verwendet wird, um die Entitätstypdefinition abzurufen, nicht der Laufzeit-Entitätstyp-Manager.

Die Felddefinitionen werden auch aus dem Status gelesen und anschließend werden sowohl der Entitätstyp als auch die Felddefinitionen gelöscht.

6
Berdir
  1. Löschen Sie alle Entitäten dieses Typs.
  2. Entfernen Sie die Entitätstypdeklaration
  3. Erstellen Sie die Caches neu
0
Eyal