Comment créer ou mettre à jours une entité Field Collection

Création

Pour ajouter du contenu dans un Field Collection, nous allons utiliser la classe Drupal\field_collection\Entity\FieldCollectionItem :

$node = Node::load(1);
$fc = FieldCollectionItem::create(
  ['field_name' => 'field_bureau_de_vente']
);
$fc->set('field_adresse', "2 rue du lac");
$fc->set('field_horaires_d_ouverture', "de 18h à 20h");

$fc->setHostEntity($node);
$fc->save();

Dans cet exemple nous déclarons la clef field_name à la méthode create qui va correspondre au nom de notre field collection, ensuite nous enregistrons les valeurs de nos champs avec la methode  set() puis la méthode setHostEntity va indiquer à Field Collection dans quel nœud nous allons les enregistrer.


 /!\ Attention : la méthode setHostEntity($node) doit être placé avant la méthode save()
 

Mise a jours

Pour mettre à jours nos champs FC nous allons simplement charger notre FC à l'aide de la méthode load() avec comme paramètre la valeur du champs Field Collection présent dans notre nœud.

$fc = FieldCollectionItem::load($node->field_bureau_de_vente->value);

$fc->set('field_adresse', '10 rue du bois vert');
$fc->set('field_horaires_d_ouverture', 'de 13h à 14h');

$fc->save();

Suppression

$fc = FieldCollectionItem::load($node->field_bureau_de_vente->value);

$fc->delete();