具有多个分类术语的Drupal 8实体查询

时间:2016-12-21 21:57:25

标签: drupal drupal-taxonomy

我有一个Drupal 8内容实体,它与分类术语有关,允许多个值。 我想查询实体并获取仅包含我在查询中使用的术语的内容。 问题是我找不到用多个分类术语查询我的实体的方法,并获得与它们相关的内容。

我的内容实体(节点包)被称为“鸡尾酒”,其中包括一个名为“field_ingredients”的实体引用字段,它与分类词汇词“成分”有关。 我想获得具有分类ID的2个成分的实体:40 AND 35.我尝试了以下代码但没有成功:

$query = \Drupal::entityQuery('node');
$query->condition('type', 'cocktails');
$query->condition('field_ingredients.entity.tid', 40);
$query->condition('field_ingredients.entity.tid', 35);
$node_ids = $query->execute();

$ node_ids为0

还有这个:

$query = \Drupal::entityQuery('node');
$query->condition('type', 'cocktails');
$query->condition('field_ingredients.entity.tid', array(40, 35), 'IN');
$node_ids = $query->execute();

$ node_ids为3,返回具有两个分类标识之一(OR逻辑)的节点ID,

正确的答案应该是一个节点ID,这是与分类标识ID相关的节点,两种成分的鸡尾酒

1 个答案:

答案 0 :(得分:3)

最后,解决方案作为评论发布在实际的Drupal API文档中

$query->condition($query->andConditionGroup()->condition('field_ingredients', array(40, 35)));

请查看以下链接以获取更多详细信息:

https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!Query!QueryInterface.php/function/QueryInterface%3A%3AandConditionGroup/8.2.x

关于第一个评论和第一个例子(“工作代码”)