Heim >Backend-Entwicklung >PHP-Tutorial >Ihre erste Migration Drupal 8
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.
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:
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:
Migrate Tools
. 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.)
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!