我将数据从外部源同步到我的 Drupal 安装。当我向新创建的节点添加分类术语关系时遇到问题。
我正在同步汽车,如果制造商名称(代码中的 $name)不在词汇表中,它将被添加到其中。如果它已经存在,则将 tid 附加到节点。
这与法拉利或大众汽车等术语完美搭配。但是还有梅赛德斯-奔驰。由于某种原因,EntityFieldQuery 似乎无法从词汇表中找到它,因为此代码在循环运行时会一遍又一遍地创建梅赛德斯-奔驰术语。
我想问题是单词之间的破折号。我希望看到 EntityFieldQuery 后面的 SQL 子句,但是当我运行它时,我没有设置完整的 drupal,因此没有加载像 Devel 这样的模块。而且我不知道如何检查SQL。
我非常感谢有关如何调试或如何解决此问题的建议。每个链接都表示赞赏。
这是我的代码:
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'taxonomy_term')
->propertyCondition('name', $name) // $name = manufacturer, like "Ferrari"
->propertyCondition('vid', 2)
->execute();
if(!empty($result))
{
$tmp = array_pop($result['taxonomy_term']);
$node->field_brand[LANGUAGE_NONE][0]['tid'] = $tmp->tid;
}
else
{
$term = new stdClass();
$term->vid = 2;
$term->name = $name
taxonomy_term_save($term);
$node->field_brand[LANGUAGE_NONE][0]['tid'] = $term->tid;
}