ฉันมีประเภทเนื้อหาโหนดสองประเภท พิมพ์_a
และ พิมพ์_b
ฉันมีเขตข้อมูลที่เรียกว่าเป็น field_author_profile
ใน พิมพ์_a
ซึ่งเป็นช่องอ้างอิงเอนทิตี พิมพ์_b
ด้วยคาร์ดินัลลิตี้ไม่จำกัด
ฉันจะอัปเดตได้อย่างไร field_author_profile
โดยทางโปรแกรม
ฉันต้องตรวจสอบว่ามีค่าอยู่แล้วในฟิลด์หรือไม่ หากมีอยู่แล้วให้เพิ่มค่าใหม่ในขณะที่อัปเดตค่าฟิลด์หรืออย่างอื่นเพียงแค่กำหนดค่า
ฉันลองใช้ตัวแปรด้านล่าง แต่ดูเหมือนว่าจะไม่ทำงาน
$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]);
บันทึกโหนดหลังจากนี้โดยใช้
$author_object->บันทึก();
แก้ไข : ค่าของฟิลด์ไม่ถูกแสดงในรูปแบบการแก้ไขโหนด แม้ว่าคิดว่ามีค่าอยู่ในฐานข้อมูล เกิดจากการเลือกประเภทบันเดิลผิดในฟิลด์อ้างอิงเอนทิตี เมื่อแก้ไขแล้วมันก็ทำงานได้ตามที่คาดไว้
นี่คือวิธีแก้ปัญหาการทำงาน
$author_object->field_author_profile[] = ['target_id' => $author_profile_nid];