Am două tipuri de conținut de noduri tip_a
și tip_b
Am un câmp numit ca field_author_profile
în tip_a
care este câmpul de referință al entității tip_b
cu cardinalitate nelimitată.
Cum actualizez field_author_profile
programatic.
De asemenea, trebuie să verific dacă valoarea există deja în câmp, dacă există, atunci adăugați noua valoare în timp ce actualizez valoarea câmpului sau, altfel, atribuiți valoarea.
Am încercat variantele de mai jos, dar se pare că niciuna nu a funcționat.
$author_object->set('field_author_profile', $author_profile_nid);
$author_object->field_author_profile = ['target_id' => $author_profile_nid];
$author_object->field_author_profile->entity->target_id->value = $author_profile_nid;
$author_object->field_author_profile[] = ['target_id' => $author_profile_nid];
$author_object->field_author_profile->target_id = $author_profile_nid;
$author_object->get('field_author_profile')->setValue(['target_id' => $author_profile_nid]);
Salvat nodul după aceasta utilizând
$obiect_autor->salvare();
Editați | × : Valoarea câmpului nu a fost redată în formularul de editare a nodului, chiar dacă era prezentă în baza de date. A fost din cauza tipului de pachet greșit selectat în câmpul de referință al entității. După ce a fost corectat, a funcționat conform așteptărilor.
Aceasta a fost soluția de lucru.
$author_object->field_author_profile[] = ['target_id' => $author_profile_nid];