【发布时间】:2023-03-23 14:23:02
【问题描述】:
我将数据从外部源同步到我的 Drupal 安装。我在向新创建的节点添加分类术语关系时遇到问题。
我正在同步汽车,如果制造商名称(代码中的 $name)不在词汇表中,它将被添加到其中。如果已经存在,则将 tid 附加到节点。
这与 Ferrari 或 Volkswagen 等术语完美搭配。但是还有梅赛德斯-奔驰。由于某种原因,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;
}
【问题讨论】:
-
我想一种方法是尝试只使用 taxonomy_get_term_by_name 而不是花哨的 EntityFieldQuery。这可能是一个错误。
标签: drupal taxonomy drupal-taxonomy