フィールドコレクションのノードIDを取得する


7

次のコードがあります。entity_load_singleを使用してフィールドコレクションアイテムをロードできます。特定のフィールドコレクションアイテムのノードIDを取得できるようにしたい。どうすればこれを達成できますか?

function dc_car_guide_model($model_id)
{
    $model = entity_load_single('field_collection_item', $model_id);
    //How can I get nid?
}

回答:


9
$model = entity_load_single('field_collection_item', $model_id);
$node = $model->hostEntity();
echo $node->nid;

Field Collectionで使用される特定のフィールドのデータを取得することは可能ですか?私は少しオフサイドを知っていますが、興味があります。
Bernard Nandwa 2013

はい、Field APIはField Collectionエンティティのフィールドでも機能します。field_get_items('field_collection_item', $field_collection, 'field_FIELD_NAME');そのフィールドコレクションエンティティの名前付きフィールドの値の配列を返します。エンティティメタデータラッパーを使用することもできます(これを行うための新しい洗練された方法を考えます:-p)。のfield_collection_item代わりにのラッパーをロードすることを指定するだけですnode
サードパーティ、2013

0

EntityFieldQueryの使用:

  $query = new EntityFieldQuery();
  $query->entityCondition('entity_type', 'node')
    ->fieldCondition('field_MYCOLLECTIONFIELD', 'value',  $model_id, '=');
  $result = $query->execute();

  if (!empty($result['node'])) {
    $nid = key($result['node']);
  }

field_MYCOLLECTIONFIELDノードのフィールドコレクションフィールドのマシン名に置き換えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.