2016-12-21 2 views
2

J'ai une entité de contenu Drupal 8 avec une relation à un terme de taxonomie qui permet plusieurs valeurs. Je souhaite interroger l'entité et obtenir un contenu contenant uniquement les termes que j'utilise dans la requête. Le problème est que je ne pouvais pas trouver un moyen d'interroger mon entité avec plusieurs termes de taxonomie et d'obtenir le contenu qui leur est associé. Mon entité de contenu (ensemble de nœuds) est appelée "cocktails" et a entre autres un champ de référence d'entité appelé "field_ingredients" qui a une relation avec la taxonomie Vocabulaire "Ingrédients". Je veux obtenir l'entité qui a par exemple 2 ingrédients avec la taxonomie ids: 40 et 35. J'essayées le code suivant sans succès:Requête d'entité Drupal 8 avec plusieurs termes de taxonomie

$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 sont 0

Et aussi ceci:

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

node_ids $ sont 3 qui retourne le nœud ids qui ont l'un des deux ids de taxonomie (OU logique),

La bonne réponse devrait être o id noeud ne, qui est le nœud qui est lié aux deux ids de taxonomie, le cocktail avec les deux ingrédients

Répondre

1

Enfin, la solution a été publiée dans l'API Drupal réelle Documentation comme un commentaire

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

observerons les points suivants lien pour plus de détails:

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

le premier commentaire et le premier exemple ("code de travail")

+0

le code votre réponse et le dans le lien sont légèrement différents. Dans votre réponse, vous liez plusieurs valeurs avec le tableau à un seul paramètre. Cela entraînera une erreur SQL sur le nombre de paramètres liés. La réponse correcte est dans le lien, où vous devez parcourir chaque ID de tag et les lier un par un (au lieu d'où vous avez le tableau). Toujours donner un upvote, puisque je n'aurais pas trouvé cette réponse que vous avez liée à moi-même. –