Score:0

วิธีอัปเดตฟิลด์อ้างอิงเอนทิตีแบบหลายค่าโดยทางโปรแกรม

ธง fr

ฉันมีประเภทเนื้อหาโหนดสองประเภท พิมพ์_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];
miststudent2011 avatar
fr flag
https://drupal.stackexchange.com/questions/213379/programmatically-update-an-entity-reference-fieldที่เกี่ยวข้อง
cn flag
ตัวอย่างที่ 4 ของคุณคือตัวอย่างที่ถูกต้อง นอกจากนี้ยังเป็นไฟล์เดียวที่ไม่ได้ใช้ `field_author_profile` ซึ่งอาจเป็นปัญหาได้
miststudent2011 avatar
fr flag
@ ไคลฟ์ ขอบคุณสำหรับการตอบกลับ มันพิมพ์ผิดแก้ไขมัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา