Drupal 8 Migrasi: menyelam mendalam ke dalam pemindahan kandungan
Modul Migrasi adalah asas ekosistem Drupal, sehingga Core Drupal 8 mengintegrasikan beberapa fungsinya. Ini adalah penting untuk menggantikan peningkatan tradisional dengan kandungan dan migrasi konfigurasi dari Drupal 6 dan 7 ke Drupal 8. Walaupun Core kini termasuk kerangka asas (dalam modul migrate
) dan alat menaik taraf Drupal 6/7 (dalam migrate_drupal
), Banyak ciri penting kekal dalam modul yang disumbangkan. Migrate Tools
sangat penting, menyediakan arahan drush dan antara muka pengguna untuk menguruskan migrasi. Selain itu, modul seperti Migrate Source CSV
, Migrate Source XML
, dan Migrate Source JSON
menawarkan plugin untuk sumber data biasa.
Konsep Utama:
Migrate Tools
dan drush migrate-import --all
mengawal proses. drush migrate-rollback --all
Senibina Migrasi:
Migrasi Drupal 8 menggunakan sistem plugin. Plugin sumber menyediakan data mentah, plugin proses mengubahnya, dan plugin destinasi menyimpannya ke entiti Drupal. Paip ini ditakrifkan dalam entiti konfigurasi penghijrahan (biasanya modul konfigurasi, diimport pada modul pembolehubah).
Contoh: Migrasi Filem
Contoh kami melibatkan dua jadual pangkalan data: (id, nama, keterangan) dan movies
(id, movie_id, nama). Skrip MySQL berikut mencipta jadual ini dan meminumnya dengan data sampel: movies_genres
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');
Migrasi genre (): migrate.migration.genres.yml
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
(terletak di Genres.php
) mentakrifkan pertanyaan, bidang, dan ID SQL. Plugin/migrate/source
Migration Movie (): migrate.migration.movies.yml
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');
Plugin Sumber menggunakan Movies.php
untuk menambah medan 'genre' yang mengandungi ID genre. prepareRow()
Pengaktifan dan pelaksanaan:
Migrate Tools
migrate-status
, migrate-import --all
). migrate-rollback --all
Kesimpulan:
Contoh ini menggambarkan keupayaan penghijrahan Drupal 8. Terokai plugin sumber yang berbeza, plugin proses, dan potensi penyelesaian tersuai untuk mengendalikan keperluan penghijrahan yang pelbagai.
Soalan -soalan yang sering ditanya (Soalan Lazim): (Ini sebahagian besarnya tidak berubah dari input, kerana ia adalah faktual dan relevan.)
Atas ialah kandungan terperinci Penghijrahan Drupal 8 pertama anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!