Ajouter une condition avec une propriété d'une entité référencée sur une entity Query avec Drupal 10.

carte postale

Comme on dit, quand on a pas de tête on a un blog. Ce court billet va donc me permettre de retrouver facilement la syntaxe pour ajouter des conditions à une Entity Query de Drupal 10 sur une propriété d'une entité référencée.

Par exemple, si vous recherchez tous les nœuds de type Film dont l'année de sortie est 2009, vous pouvez faire quelque chose comme ceci :

$result = \Drupal::entityQuery('node')
 ->condition('type', 'movie')
 ->condition('field_release_year', '2009')
 ->execute() ;

Mais qu'en est-il si vous souhaitez baser la condition sur une valeur d'une entité référencée ? Peut-être souhaitez-vous trouver tous les nœuds de type Film dont le réalisateur est né en 1981 ? Supposons que les nœuds de type Film possèdent un champ de référence d'entité vers les nœuds de type Directeur, où l'un des champs du type de contenu Directeur est field_birth_year (année de naissance). Il est presque aussi facile d'écrire une condition entityQuery pour cette situation également :

$result = \Drupal::entityQuery('node')
->condition('type', 'movie')
->condition('field_director.entity:node.field_birth_year', '1981')
->execute() ;

Notez le paramètre entity:node dans la deuxième condition qui vous permet d'accéder aux champs de l'entité référencée.

Source : Drupal 8 entity query across (through?) an entity reference field

 

Ajouter un commentaire