web-dev-qa-db-ja.com

エンティティ参照フィールドからすべてのエンティティの配列を取得します

コンテンツタイプの1つに、複数の値を許可する分類用語参照フィールドがあります。通常、フィールドからの用語が必要な場合は、単に行います

$ node-> field_taxonomy_term-> entity;

ただし、複数のエンティティがある場合、これは機能しません。通常、私はgetValue()がトリックを実行することを期待しますが、それはキーとしてtarget_idを持つIDの配列を提供するだけです。この方法でそれらを取得する方法について

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

しかし、取得するのが$ node-> field_name-> entityのように単純な場合、私は必要以上に多くの作業をしているように感じました。フィールドからエンティティの配列を取得する簡単な方法はありますか?それを行うために最も効率的な方法は何ですか?

2
Matt

私はその特定のフィールドについて確かに言うことはできませんが、通常、あなたが呼び出すことができるreferencedEntities()メソッドがあります

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

だから、おそらくこのようなもの:

$ entities = $ node-> field_taxonomy_term-> referencedEntities();

4
Leigh