Knoten-ID der Feldsammlung abrufen


7

Ich habe den folgenden Code. Ich kann das Feldsammlungselement mit entity_load_single laden. Ich möchte in der Lage sein, die Knoten-ID für ein bestimmtes Feldsammlungselement abzurufen. Wie kann ich das erreichen?

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

Antworten:


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

Ist es möglich, die Daten in einem bestimmten Feld abzurufen, das in der Feldsammlung verwendet wird? Ein bisschen abseits weiß ich aber bin nur neugierig.
Bernard Nandwa

Ja, die Feld-API funktioniert auch für Felder in Feldsammlungsentitäten. field_get_items('field_collection_item', $field_collection, 'field_FIELD_NAME');gibt ein Array von Werten für ein benanntes Feld in dieser Feldsammlungsentität zurück. Sie können auch die Entity-Metadaten-Wrapper verwenden (dies ist die neue, raffinierte Methode, um dies zu tun :-p). Geben Sie einfach an, dass Sie einen Wrapper für a field_collection_itemanstelle von a laden node.
Thirdender

0

Verwenden von 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']);
  }

Ersetzen Sie field_MYCOLLECTIONFIELDdurch den Computernamen des Felds Feldsammlung auf Ihrem Knoten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.