Heim >Backend-Entwicklung >PHP-Tutorial >Ihre erste Migration Drupal 8

Ihre erste Migration Drupal 8

Lisa Kudrow
Lisa KudrowOriginal
2025-02-15 10:45:12960Durchsuche

Drupal 8 Migration: Ein tiefes Eintauchen in die Inhalttransfer

Das Migrationsmodul ist ein Eckpfeiler des Drupal -Ökosystems, so sehr, dass Core Drupal 8 einen Teil seiner Funktionalität integriert hat. Dies war entscheidend, um herkömmliche Upgrades durch Inhalts- und Konfigurationsmigrationen von Drupal 6 und 7 auf Drupal 8 zu ersetzen. Während Core jetzt das grundlegende Rahmen (im migrate -Modul) und Drupal 6/7 -Upgrade -Tools (in migrate_drupal) enthält Viele wesentliche Merkmale bleiben in beitragenden Modulen. Migrate Tools ist besonders wichtig und bietet Sprusbefehle und eine Benutzeroberfläche für die Verwaltung von Migrationen. Darüber hinaus bieten Module wie Migrate Source CSV, Migrate Source XML und Migrate Source JSON Plugins für gemeinsame Datenquellen an.

Your First Drupal 8 Migration

Dieser Artikel zeigt die Migration der Drupal 8, indem Inhalte in Knotenentitäten importiert werden. Der Einfachheit halber verwenden wir Datenbanktabellen in der Drupal -Installation. Der vollständige Code ist in [diesem Repository] verfügbar (link_to_repository_here - Ersetzen

Schlüsselkonzepte:

    Drupal 8 Migrationen bestehen aus drei Teilen:
  • Quelle , prozess und Ziel . Das Quell -Plugin ruft Rohdaten ab, verarbeiten Sie Plugins und Ziel -Plugins speichern sie als Drupal -Entitäten.
  • ist für das Ausführen von Migrationen über DRUSH (die empfohlene Methode) von entscheidender Bedeutung. Befehle wie Migrate Tools und drush migrate-import --all steuern den Prozess. drush migrate-rollback --all

Migrationsarchitektur:

Eine Drupal 8 -Migration verwendet das Plugin -System. Das Quell -Plugin bietet Rohdaten, Process -Plugins transformieren und Ziel -Plugins speichern sie in Drupal -Entitäten. Diese Pipeline ist in einer Migrationskonfigurationsentität definiert (normalerweise Modulkonfiguration, importiert auf Modul -Aktivierung).

Beispiel: Filmmigration

Unser Beispiel umfasst zwei Datenbanktabellen:

(ID, Name, Beschreibung) und movies (ID, Movie_id, Name). Das folgende MySQL -Skript erstellt diese Tabellen und populiert sie mit Beispieldaten: movies_genres

<code class="language-sql">CREATE TABLE `movies` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `description` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `movies_genres` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `movie_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `movies` (`id`, `name`, `description`) VALUES
(1, 'Big Lebowsky', 'My favorite movie, hands down.'),
(2, 'Pulp fiction', 'Or this is my favorite movie?');

INSERT INTO `movies_genres` (`id`, `movie_id`, `name`) VALUES
(1, 1, 'Comedy'),
(2, 1, 'Noir'),
(3, 2, 'Crime');</code>
Ziel ist es, Filme in Artikelknoten und Genres in Taxonomiebegriffe (Tags-Vokabular) zu migrieren, wodurch der Film-Genre-Assoziation aufrechterhalten wird.

Genre -Migration (): migrate.migration.genres.yml

<code class="language-yaml">id: genres
label: Genres
migration_group: demo
source:
  plugin: genres
  key: default
destination:
  plugin: entity:taxonomy_term
process:
  vid:
    plugin: default_value
    default_value: tags
  name: name</code>
Das Quell -Plugin

in Genres.php) definiert die SQL -Abfrage, Felder und IDs. Plugin/migrate/source

Filmmigration (): migrate.migration.movies.yml

<code class="language-sql">CREATE TABLE `movies` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `description` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `movies_genres` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `movie_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `movies` (`id`, `name`, `description`) VALUES
(1, 'Big Lebowsky', 'My favorite movie, hands down.'),
(2, 'Pulp fiction', 'Or this is my favorite movie?');

INSERT INTO `movies_genres` (`id`, `movie_id`, `name`) VALUES
(1, 1, 'Comedy'),
(2, 1, 'Noir'),
(3, 2, 'Crime');</code>

Das Quell -Plugin Movies.php verwendet prepareRow(), um ein "Genres" -Feld mit Genre -IDs hinzuzufügen.

Aktivierung und Ausführung:

  1. Aktivieren Sie das benutzerdefinierte Modul.
  2. installieren Migrate Tools.
  3. DRUSH -Befehle verwenden (migrate-status, migrate-import --all, migrate-rollback --all).

Schlussfolgerung:

Dieses Beispiel zeigt die Migrationsfunktionen von Drupal 8. Erforschen Sie verschiedene Quell -Plugins, Prozess -Plugins und das Potenzial für benutzerdefinierte Lösungen, um verschiedene Migrationsanforderungen zu erfüllen.

häufig gestellte Fragen (FAQs): (Diese sind gegenüber der Eingabe weitgehend unverändert, da sie sachlich und relevant sind.)

  • Was sind die Voraussetzungen für die Migration zu Drupal 8? (Antwort bleibt gleich)
  • Wie bereite ich meine Drupal 8 -Site für die Migration vor? (Antwort bleibt gleich)
  • Wie führe ich den Migrationsprozess durch? (Antwort bleibt gleich)
  • Was passiert mit meinem Inhalt während des Migrationsprozesses? (Antwort bleibt gleich)
  • Was soll ich tun, wenn der Migrationsprozess fehlschlägt? (Antwort bleibt gleich)
  • Kann ich die Konfiguration meiner Website in Drupal 8? migrieren (Antwort bleibt gleich)
  • Wie migriere ich das Thema meiner Website in Drupal 8? (Antwort bleibt gleich)
  • Kann ich eine Migration zurückrollen? (Antwort bleibt gleich)
  • Wie aktualisiere ich meinen migrierten Inhalt in Drupal 8? (Antwort bleibt gleich)
  • Kann ich eine partielle Migration ausführen? (Antwort bleibt gleich)

Denken Sie daran, "link_to_repository_here" durch den tatsächlichen Link zu ersetzen, wenn Sie einen haben.

Das obige ist der detaillierte Inhalt vonIhre erste Migration Drupal 8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn