Wie benenne ich ein Feld um?

7

Mit Drupal 7 hatten wir das Field Rename- Modul, das jedoch noch nicht auf Drupal portiert wurde.

Welche SQL-Magie wird also benötigt, um ein Feld in Drupal 8 umzubenennen?

MrPaulDriver
quelle
1
Mit Raw SQL werden Sie wahrscheinlich nicht zu weit kommen (aber in Drupal 7 auch nicht). Der Feldspeicher (der den Namen enthält) und die Beziehung zu Entitätstypen / -paketen werden in serialisierten PHP-Zeichenfolgen gespeichert. Die Verwendung der API ist am besten
Clive
Danke Clive. Ich bin mit PHP oder der API nicht auf dem
neuesten Stand
Sie können dies mit der Drush- oder Drupal-Konsole und der Drupal- Konfigurationsverwaltung tun. Exportieren Sie einfach Ihre Site-Konfiguration, bearbeiten Sie das, was Sie benötigen, und importieren Sie diese dann.
StevanRS

Antworten:

13

Ich hatte das Unglück, dies vorher tun zu müssen: P, und mein Rat wäre wie folgt:

Vergessen Sie das Umbenennen des vorhandenen Felds. Der Maschinenname ist auf mehrere schwer zu bearbeitende Stellen verteilt, und Sie werden wahrscheinlich einige verpassen und seltsame Fehler erhalten. Wenn Sie beispielsweise nur die Tabellen und die Konfiguration umbenennen, wird die Feld-API angepasst, wenn versucht wird, die alten Tabellen zu löschen, und festgestellt wird, dass sie bereits verschwunden sind. Die Schemainformationen werden im Schlüsselwertspeicher gespeichert und können nicht von Grund auf neu erstellt werden. Wenn Sie also manuelle Änderungen vornehmen, kann dies leicht zu einem fehlerhaften Zustand führen.

Erstellen Sie stattdessen das Feld mit dem richtigen Computernamen neu, kopieren Sie die Daten mit SQL und löschen Sie schließlich das alte Feld.

INSERT INTO node__field_new SELECT * FROM node__field_old;
INSERT INTO node_revision__field_new SELECT * FROM node_revision__field_old;
Christoph Burschka
quelle
Das klingt nach einem guten Rat. Ich werde es versuchen und zurückmelden. Vielen Dank
MrPaulDriver
3
TA Dah! Das war einfach und problemlos. Danke für den Tipp.
MrPaulDriver
1

In Bezug auf den neuesten Kommentar von StevanRS ist dies nicht einfach so, denn wenn Sie nur nach dem Umbenennen importieren, schlägt dies fehl, da das ursprüngliche Feld nicht mehr vorhanden ist. Also, hier ist mein Vorschlag:

  • Exportieren Sie die Konfiguration. Speichern Sie alle diese Dateien mit einer Konfiguration für das Feld. * *
  • Löschen Sie dieses Feld auf der Drupal-Benutzeroberfläche.
  • Konfiguration erneut exportieren (Feld bereits entfernt)
  • Kopieren Sie umbenannte Dateien erneut in den Konfigurationsordner.
  • Dann kannst du richtig importieren :)

Typische Dateien, die Sie speichern müssen:

  • field.field.yourentity.yourfield
  • field.storage.yourentity.yourfield
  • core.entity_form_display.yourentity.yourfield
  • core.entity_view_display.yourentity.yourfield
Ivan
quelle