Drupal 8 et Drupal 9 - EntityQuery - faire une condition sur un champ d'une entité liée

Posté le Mardi 18 août 2020 - 15:16

Petite découverte datant d'il y a quelques mois, il est possible via une EntityQuery d'ajouter une condition sur un champ d'une entité liée.

Petit exemple :

J'ai un type d'entité game (match), lié à un type d'entité day (journée), lui même lié à un type d'entité league (compétition)

(Match : OM - ASSE, journée : Journée 1, Compétition : Ligue 1 2020-2021)

Image
MPD MesPronos

 

Si je souhaite récupérer tous les matchs d'une compétition donnée (mettons la 12,) je peux me baser sur l'attribut days.league

  1. $query = \Drupal::entityQuery('game');
  2. $query->condition('day.entity:day.league', 12);
  3. $ids = $query->execute();

 

Mais on peut aussi aller plus loin et remonter encore d'un niveau pour faire une condition sur un attribut de la compétition de la journée des matchs. Pour ainsi récupérer l'ensemble des matchs des compétitions active (attribut leagues.status) :

  1. $query = \Drupal::entityQuery('game');
  2. $query->condition('day.entity:day.league.entity:league.status', 'active');
  3. $ids = $query->execute();

Source : https://www.drupaleasy.com/quicktips/drupal-8-entity-query-across-throu…, partagé sur le slack de l'association Drupal France

Aller plus loin ?

 

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...