【发布时间】: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