Yaml,映射多个值

时间:2015-09-30 08:49:03

标签: drupal yaml drupal-8

我正在努力改进wordpress到drupal 8迁移模块(https://github.com/amitgoyal/d8_migrate_wordpress)并添加导入分类术语的功能。 我已经编写了将分类术语加入帖子的查询,但是在我的drupal内容类型文章中将多个术语分配给一个字段(称为标签,这是对分类术语的实体引用)时遇到了麻烦。 我已经创建了一个清单文件,用于映射到我的文章内容类型:

id: posts
label: Wordpress Posts
migration_groups:
  - Wordpress
source:
  plugin: posts
destination:
  plugin: entity:node
process:
  nid: id
  vid: id
  type: type
  langcode:
    plugin: default_value
    default_value: "und"
  title: post_title
  uid: post_author
  status:
    plugin: default_value
    default_value: 1
  body/value: post_content
  body/format: normal
  field_image/target_id: post_image
  field_tags/target_id: terms

在我的posts.php文件中,它处理wordpress数据的所有提取和处理,我有一个函数(prepareTerms),它设置属性' terms',由上面的yaml文件使用。如果我将其设置为单个值,那么一切都按预期工作:

$terms = '4';
$row->setSourceProperty('terms', $terms);

但是,我想将此属性设置为数组(对于多个分类术语),如下所示:

$results = $query->execute()->fetchAll();

$terms = array();
foreach($results as $term) {
  $terms[] = $term['term_id'];
}
//$terms = Yaml::dump($terms);
$row->setSourceProperty('terms', $terms);

由于每个分类术语都应该是一个数字(术语ID),我应该只是传递一个整数数组,但我似乎无法将其映射到' field_tags'。在设置'术语之前,我尝试过使用Yaml :: dump。 posts.php中的财产。我也尝试过更改yaml模板来硬编码这些,如下所示:

field_tags/target_id: [1, 2]

field_tags/target_id: {0:1, 1:2}

field_tags: {target_id: 1, target_id:2}

Linked是我创建的虚拟节点的屏幕截图,其中我已经分配了两个分类术语(通过devel加载) - http://imgur.com/nkqQoNG

任何帮助更强烈的赞赏!

1 个答案:

答案 0 :(得分:0)

修正了,它只是不正确的数组格式的组合,并在YAML中设置了错误的目标。 我的代码现在看起来像:

Posts.php

#hardcoded
$terms = array(array('target_id'=>'1'), array('target_id'=>'2'));

Posts.yml

field_tags: terms