web-dev-qa-db-fra.com

Obtenir un tableau de toutes les entités à partir du champ de référence d'entité

Sur l'un de mes types de contenu, j'ai un champ de référence de terme de taxonomie qui permet plusieurs valeurs. Normalement, si je voulais le terme d'un domaine, je ferais simplement

$ node-> field_taxonomy_term-> entity;

Cependant, cela ne fonctionne pas s'il existe plusieurs entités. Normalement, je m'attendrais à ce que getValue () fasse l'affaire, mais cela donne simplement un tableau des identifiants avec target_id comme clé. J'ai en quelque sorte un moyen de les obtenir avec cette méthode

    $entity_storage = \Drupal::entityTypeManager()->getStorage('taxonomy');
    $ids = [];
    foreach ($this->field_taxonomy_term->getValue() as $item) {
        $ids[] = $item['target_id'];
    }
    $entities = $entity_storage->loadMultiple($ids);

Mais quand en obtenir un est aussi simple que $ node-> field_name-> entity, j'avais le sentiment que je fais plus de travail que nécessaire. Existe-t-il un moyen plus simple d'obtenir un tableau d'entités à partir d'un champ ou est-ce que je fais le moyen le plus efficace pour le faire?

2
Matt

Je ne peux pas dire avec certitude sur ce champ spécifique, mais il y a généralement la méthode referencedEntities () que vous pouvez appeler

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21Entity.php/function/Entity%3A%3AreferencedEntities/8.4.x

Donc quelque chose comme ça peut-être:

$ entités = $ node-> field_taxonomy_term-> referencedEntities ();

4
Leigh