【问题标题】:Restore relationships between nodes when using migrate module in Drupal 7在 Drupal 7 中使用迁移模块时恢复节点之间的关系
【发布时间】:2013-12-19 12:53:34
【问题描述】:

我目前正在开发一个迁移模块,在该模块中我使用不同的 XML 源(由外部提供商提供)来导入电影院程序。我得到了像这样的电影、剧院和放映时间的单独文件(简化):

<Movies>
 <Movie>
  <movieid>14652</movieid>
  <title>Movie Title</title>
 </Movie>
</Movies>

<Theaters>
 <Theater>
  <theaterid>75102</theaterid>
  <description>Blabla</description>
 </Theater>
</Theaters>

<Showtimes>
  <Showtime>
    <showtimeid>147001169</showtimeid>
    <movieid>14652</movieid>
    <theaterid>75102</theaterid>
    <date>2013-12-02 20:15</date>
  </Showtime>
</Showtimes>

我已经能够导入所有需要的数据并为每种类型创建节点。除了他们之间的关系。我不确定我应该使用哪种字段。目前我正在使用实体引用,但我不知道如何正确设置它们以及它们是否是此类应用程序的最佳选择。计划是根据电影或影院显示放映时间信息(例如,显示当前在选定影院播放的所有电影或显示给定电影的所有影院。 另一个相关的问题。我应该用 xml 中的给定 id 覆盖节点 id (nid)(这是保存吗?)还是应该为它们创建不同的字段?

提前感谢您的帮助! 如果需要更多信息,我会立即回复;)

最好的问候, 萨塔拉


解决方案

我只需要使用 sourceMigration() 函数,并将迁移键定义在 migrate_api() 文件的覆盖中的“迁移”数组中作为参数)。现在 id 在 entity_refernce 字段中被正确映射:

$this->addFieldMapping('field_showtime_movie', 'movieid')->xpath('movieid')->sourceMigration('Movie');
$this->addFieldMapping('field_showtime_theater', 'theaterid')->xpath('theaterid')->sourceMigration('Theater');

【问题讨论】:

    标签: xml drupal drupal-7 migrate


    【解决方案1】:

    如果你只打算使用节点,你也可以使用节点引用: https://drupal.org/project/references

    这已经存在了很长时间,而且可能更容易设置。我将创建一个具有 2 x 节点引用字段的 Showtime 节点类型。一个参考电影,另一个参考剧院。

    创建节点类型后,您应该先迁移电影和剧院,然后在迁移放映时间时引用它们。您可以在映射节点引用字段时执行此操作。 Migrate 会将旧项目 id 映射到新创建的节点 id。在子标题 sourceMigration 下查看此文档 (https://drupal.org/node/1133448)。

    就我个人而言,我不会强迫 nid 的。 Migrate 不需要创建映射表,因此您可以找出哪些项目映射到哪个节点。

    【讨论】:

    • 感谢您的快速回复。现在可以工作了。我决定继续使用 entity_reference 模块,因为与 node_reference 相比,它仍在积极开发中。
    • 它仍在积极维护中。它现在是引用 drupal.org/project/references 的子模块,但是是的,它不再被开发为处于稳定状态。
    • release notes of references 7.x-2.0 中,他们说它很可能在不久的将来被弃用,并且在新的 D7 项目中应该首先考虑 entity_reference。由于这个条目已经很老了,也许他们决定保留它。
    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多