Score:0

ฉันจะตั้งค่าการอ้างอิงเนื้อหาตามชื่อสำหรับโหนดโดยทางโปรแกรมได้อย่างไร

ธง id

สวัสดีทีม ฉันมีปัญหาบางอย่าง

ฉันกำลังสร้างโหนดและฉันต้องการตั้งค่าการอ้างอิงเนื้อหาตามชื่อไม่ใช่ตาม id ฉันกำลังทำสิ่งนี้ แต่ไม่ได้ผล: 'field_content_type_items' ถูกอ้างอิงไปยังประเภทเนื้อหาอื่น

$node = \Drupal\node\Entity\Node::create([
    'type' => 'รายการ',
    'สถานะ' => $สถานะ,
    'ชื่อเรื่อง' => $ชื่อ,
    'field_content_type_items' => "CUN",
]);

ฉันยังลองกับตัวอย่างนี้ 'field_content_type_items' => [['target_id' => 12]], แต่ฉันไม่รู้รหัสสำหรับ คู ฉันเลยใช้ไม่ได้ target_id ฉันได้ลองด้วย:

$node->set('field_content_type_items', 'CUN');

คุณจะกรุณาช่วยฉันหน่อยได้ไหม?

ฉันจะตั้งชื่อเนื้อหาได้อย่างไรเมื่อฉันสร้างโหนด

ความนับถือ มาริโอ้

Score:2
ธง cn

ฟิลด์อ้างอิงเอนทิตีต้องการ ID เอนทิตี ดังนั้น เว้นแต่คุณต้องการขยายประเภทฟิลด์ (ซึ่งอาจทำให้ยุ่งเหยิงโดยไม่จำเป็น) คุณจะต้องได้รับ ID ของเนื้อหาเป้าหมาย

วิธีหนึ่งในการทำเช่นนี้คือ EntityStorageBase::loadByProperties(), เช่น.

$target_nodes = \Drupal::entityTypeManager()->getStorage('โหนด')
  ->loadByProperties(['title' => 'CUN', 'type' => 'foo']);

ถ้า (นับ ($ target_nodes)) {
  // สำหรับตัวอย่าง สมมติว่าโหนดแรกเป็นโหนดที่ถูกต้อง
  $target_id = รีเซ็ต($target_nodes)->id();

  // ...
}

โปรดทราบว่าชื่อโหนดนั้นไม่ซ้ำกัน ดังนั้นคุณอาจต้องเพิ่มตรรกะการกรองเพิ่มเติมเพื่อให้ได้โหนดที่คุณต้องการ

mxr10 avatar
id flag
ใช่นั่นคือสิ่งที่ฉันคิดเพื่อรับ id node โดยใช้แบบสอบถามแล้วใช้ใน target_id ขอบคุณ

โพสต์คำตอบ

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