Wie kann ich die UUID-API verwenden?

8

Mir ist bekannt, dass es sich bei der Frage (fast) um ein Duplikat der folgenden Frage Nr. 21991 handelt , die bereits 2012 veröffentlicht wurde. Diese Frage bezieht sich jedoch NICHT auf Drupal 8, bei dem sich die UUID im Kern befindet.

Verweise:

In der Drupal 8 Core Module-Dokumentation ist die UUID nicht aufgeführt.

Ich frage mich, ob ich das Kern-UUID-Modul von Drupal 8 nutzen könnte, um relationale Daten zu migrieren und zuzuordnen, die aus einer anderen Umgebung importiert wurden, deren eindeutige Schlüssel von Firebase generiert wurden.

Aktualisieren:

Es wurde freundlicherweise darauf hingewiesen, dass UUID kein Modul ist.

Es scheint standardmäßig UUID-Datensätze für Entitäten (auch bekannt als Knoten) zu erstellen und kann anscheinend zum Zuordnen von Entitätsreferenzen verwendet werden.

Kann ich dies nutzen, wenn ich externe Daten einführe, die bereits eindeutige IDs haben? Ich habe also die "Knoten" -IDs und kann sie mit den UUIDs abbilden?

Update basierend auf weiteren Kommentaren:

Ziel ist es, UUID mit Entitäten und dem REST-Modul zu verwenden. Dies scheint sinnvoll zu sein, wenn externe relationale Daten importiert werden, die bereits eindeutige IDs haben.

Ich versuche nur zu verstehen, wie UUID funktioniert, was es kann und was nicht, wie ich UUIDs generieren und validieren kann, worauf ich achten muss, wenn ich externe IDs einführe.

Stefan
quelle

Antworten:

10

Ich gehe davon aus, dass Sie wissen möchten, wie Sie eine UUID in Drupal 8 generieren, da Sie wirklich nicht viel anderes tun können;)

Alle Entitäten haben automatisch eine UUID. Wenn Sie Ihre Daten also als Konfigurations- oder Inhaltsentität speichern, müssen Sie nur den UUID-Entitätsschlüssel definieren.

Um selbst eine UUID zu generieren, benötigen Sie den UUID-Dienst:

$uuid = \Drupal::service('uuid');
$uuid->generate();
$uuid->isValid($uuid_to_validate);
Berdir
quelle
Vielen Dank. Ich verstehe bisher, dass sie automatisch generiert werden. Sie schlagen also vor, dass ich die externe UUID-Logik über den von Ihnen genannten Dienst einführen muss? Aber das wäre für die Generation. Kann ich auch eine Entität mit einer bestimmten UUID speichern?
Stefan
Entschuldigung, ich habe es noch nicht ausprobiert. Deshalb habe ich ursprünglich um eine Dokumentation gebeten, damit ich etwas recherchieren kann.
Stefan
Ich bin mir nicht sicher ob ich das verstehe. Beachten Sie, dass es sich um einen (Symfony) Abhängigkeitsinjektionsdienst handelt, nicht um einen Webdienst. Ja, Sie können Entitäten mit Ihrer eigenen UUID speichern, wenn Sie bereits eine haben. Übergeben Sie diese einfach als Anfangswert an YourEntity :: create ().
Berdir
OK danke. Wissen Sie, wo ich neben der API weitere Informationen dazu erhalten kann? Weil es etwas schwierig ist, das ganze Bild herauszufinden, wenn man nur die API betrachtet.
Stefan
1
Ich bin mir nicht sicher, welches Bild du meinst, da mir immer noch nicht klar ist, was du versuchst zu tun. Über die UUID-Komponente / den UUID-Dienst selbst gibt es wirklich nichts mehr zu sagen. Sie generiert lediglich UUIDs und validiert sie. Wenn das Ihre Frage nicht beantwortet, haben Sie vielleicht die falsche Frage gestellt :) Versuchen Sie genau zu fragen, was Sie erreichen möchten, möglicherweise als neue Frage. Möglicherweise geht es bei Ihrer Frage nicht so sehr um UUID, sondern darum, wie Entitäten oder möglicherweise das REST-Modul UUIDs verwenden. Auch hallo Schweizer Mitmensch :)
Berdir
0

So generieren Sie UUID mit Drush:

drush php-eval "echo \Drupal::service('uuid')->generate();"
Echo
quelle