วิธีรับอาร์เรย์ของรหัสเอนทิตีที่อ้างอิงจากฟิลด์การอ้างอิงเอนทิตี


10

ฉันมีentity_referenceสนามที่มีความBaseFieldDefinition::CARDINALITY_UNLIMITEDสำคัญเชิงหัวใจ ฉันต้องการรายการรหัสเอนทิตีที่อ้างอิง ฉันรู้ว่าฉันสามารถรับเอนทิตีที่อ้างอิงได้ทั้งหมดโดยการโทร$x->referencedEntities()แต่ฉันต้องการเฉพาะรหัสที่จะโหลดเอนทิตีในภายหลัง ขณะนี้ฉันกำลังทำสิ่งนี้:

  $a = [];
  foreach ($entity->autoren as $v) {
    $a[] = $v->target_id;
  }
  $this->setCurrentAnwaltReferenzen($a);

ไม่มีใครรู้วิธีแก้ปัญหาที่ดีกว่าเหมือนใน D7 (-> raw ())?

ขอบคุณ

คำตอบ:


24

คุณสามารถทำได้ในหนึ่งบรรทัดด้วยฟังก์ชันอาร์เรย์แทนการวนซ้ำ:

$ids = array_column($entity->autoren->getValue(), 'target_id');

แก้ไข: ใช้getValue()เพื่อรับอาร์เรย์ของฟิลด์เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.