Understanding Field Collection Values

Last updated on
30 April 2025

You are browsing documentation for an older version of Drupal, which is not supported any longer, and the information may not be correct. See current documentation for Contributed modules

When a field collection is added to a user, node, or other Drupal entity it is represented with a field type of field_collection_item. The value stored in the field_collection_item field is the id of the field collection, not the individual values of the fields making up the field_collection_item.

For example, take the following configuration:

  • Node type Playlist
  • Playlist has a field collection named Track (field_track)
    field_track of type field collection
  • Track field collection consists of the fields Song and Artist
    field_song of type text
    field_artist of type text

A Playlist node is created with two tracks. For the purposes of the example the following values are assigned:

  • Playlist node id: 25
  • 1st track: field_collection id: 17
    field_song: The Drupal Song
    field_artist: Lullabots
  • 2nd track: field_collection id: 18
    field_song: Drupal Heaven (I Shall Be Released)
    field_artist: The Secret Kitten Killers

When node 25 is loaded, field_track has the following value:

[field_track] => Array
    (
        [und] => Array
            (
                [0] => Array
                    (
                        [value] => 17
                    )
                [1] => Array
                    (
                        [value] => 18
                    )
            )
    )

To get the values of the individual field items call the entity_load function:

  $node25 = node_load(25);
  $track_1 = entity_load('field_collection_item', array($node25->field_track[LANGUAGE_NONE][0]['value']));
  $track_2 = entity_load('field_collection_item', array($node25->field_track[LANGUAGE_NONE][1]['value']));

Help improve this page

Page status: Not set

You can: