Score:1

รับค่าฟิลด์จากหลาย ๆ เอนทิตีพร้อมกัน

ธง ar

ฉันมีไซต์ Drupal ที่ใช้ ย่อหน้า ซึ่งเนื้อหาประเภทใดประเภทหนึ่ง ขอเรียกว่า ก กลุ่ม, สามารถมีกี่ย่อหน้าก็ได้ และเรียกแต่ละย่อหน้าเหล่านี้ว่า สมาชิกมีการอ้างอิงถึงผู้ใช้ อยากได้ทั้งหมด uidของผู้ใช้ซึ่งเป็น สมาชิก ของที่กำหนด กลุ่ม.

ฉันสามารถทำได้ด้วยการสืบค้นฐานข้อมูลเช่น

เลือก field_user_target_id
จากวรรค__field_user
โดยที่entity_id = (
    เลือก field_members_target_id
    จาก node__field_members
    ที่ entity_id = <GroupID>
    ขีดจำกัด 1
);

สำหรับที่กำหนด รหัสกลุ่มแต่ฉันสงสัยว่าจะมีวิธีการทำสิ่งนี้อย่างมีประสิทธิภาพโดยไม่ต้องสอบถามฐานข้อมูลโดยตรงหรือไม่ ตัวเลือกหนึ่งจะเป็นเช่น

$group = \Drupal\node\Entity\Node::load($groupID);
$uids = [];
foreach ($group->field_members->referencedEntities() เป็น $member) {
    $uids[] = $member->field_user->target_id;
}

แต่มีวิธีทำโดยไม่ต้องวนซ้ำ สมาชิก?

Score:3
ธง cn

foreach ลูปคือวิธีที่ฉันทำ แต่สำหรับประเด็นของคุณ แบบสอบถามมักจะมีประสิทธิภาพมากที่สุด เทคนิคนี้นำไปใช้ในทุกสถานการณ์ที่คุณมีเลเยอร์ API อยู่ระหว่างนั้น หากคุณต้องการสร้างแบบสอบถาม คุณสามารถทำได้ แต่โดยทั่วไปไม่จำเป็น เมื่อทำโปรไฟล์ใบสมัครของคุณ หากพื้นที่นี้กลายเป็นคอขวด นั่นคือตอนที่ฉันจะเริ่มพิจารณาทำสิ่งนั้น โปรดทราบว่าการใช้ API จัดการสิ่งต่างๆ เช่น การแก้ไข และอื่นๆ ทั้งหมด

ดู Drupal 8: ฉันจะ "กระตือรือร้นในการโหลด" เอนทิตีที่อ้างอิงผ่านฟิลด์ EntityReferenceFieldItemList ได้อย่างไร สำหรับรายละเอียดเพิ่มเติมในโพสต์นั้นพวกเขาอธิบายว่าใช้ เอนทิตีอ้างอิง () โหลดเอนทิตีเหล่านั้นลงในหน่วยความจำ ดังนั้นจึงไม่เหมือนกับว่าสิ่งเหล่านี้เป็นการเข้าชมแต่ละรายการในฐานข้อมูล

โพสต์คำตอบ

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