首页 >后端开发 >php教程 >您的第一个Drupal 8迁移

您的第一个Drupal 8迁移

Lisa Kudrow
Lisa Kudrow原创
2025-02-15 10:45:12944浏览

> drupal 8迁移:深入研究内容传输

迁移模块是Drupal生态系统的基石,以至于Core Drupal 8集成了其一些功能。 这对于用内容和配置迁移从Drupal 6和7到Drupal 8替换传统升级至关重要。虽然Core现在包括基本框架(在migrate>模块中)和Drupal 6/7升级工具(IN migrate_drupal),IN Migrate Tools),贡献模块中仍然存在许多基本特征。 Migrate Source CSV尤其重要,提供用于管理迁移的drush命令和用户界面。 此外,Migrate Source XMLMigrate Source JSON

的模块为通用数据源提供插件。>

Your First Drupal 8 Migration

>本文通过将内容导入节点实体来演示Drupal 8迁移。为简单起见,我们将在Drupal安装中使用数据库表。 完整的代码可在[此存储库](link_to_to_repository_here-替换为实际链接)中可用

密钥概念:

    drupal 8迁移由三个部分组成: source
  • process destination 。 源插件获取原始数据,处理插件对其进行操作,并且目标插件将其保存为Drupal实体。 对于通过drush(推荐方法)运行迁移至关重要。 命令之类的命令和
  • 控制过程。
  • > Migrate Tools drush migrate-import --alldrush migrate-rollback --all迁移体系结构:
> Drupal 8迁移使用插件系统。 源插件提供了原始数据,过程插件将其转换为IT,并且目标插件将其保存到Drupal实体中。 该管道是在迁移配置实体中定义的(通常在模块启用上导入的模块配置)。

>>示例:电影迁移

我们的示例涉及两个数据库表:

(id,name,Description)和

(id,Movie_id,name)。 以下MySQL脚本创建了这些表,并使用示例数据填充它们:> 的目标是将电影和流派迁移到分类学术语(词汇)中,维持电影类型的协会。

流派迁移(movies):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>

源插件(位于

中)定义了SQL查询,字段和IDS。 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>
<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>

Movies.php源插件使用prepareRow()添加包含流派ID的'流派'字段。

激活和执行:

    启用自定义模块。
  1. > install
  2. Migrate Tools
  3. 使用drush命令(
  4. migrate-statusmigrate-import --all)。migrate-rollback --all>

结论: >此示例说明了Drupal 8的迁移功能。 探索不同的源插件,过程插件以及自定义解决方案来满足各种迁移需求的潜力。

>

>

常见问题(常见问题解答):

(它们在很大程度上是从输入中不变的,因为它们是事实和相关的。 >

>迁移到drupal 8?
    (答案保持不变)
  • 的先决条件是什么 >我如何准备我的drupal 8网站迁移?
  • (答案保持不变)
  • >我如何执行迁移过程?(答案保持不变)
  • 在迁移过程中我的内容会发生什么?
  • >如果迁移过程失败,该怎么办?(答案保持不变)
  • >>我可以将网站的配置迁移到drupal 8?(答案保持不变)
  • >
  • 我如何将网站的主题迁移到Drupal 8?(答案保持不变)
  • 我可以回滚迁移吗?
  • (答案保持不变) >我如何更新drupal 8?
  • 中的迁移内容(答案保持不变)
  • > 我可以执行部分​​迁移吗? 请记住,如果您有一个>,请替换为实际链接。

以上是您的第一个Drupal 8迁移的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn