Score:1

วิธีค้นหาโมดูลที่กำลังอัปเดตโหนดของฉันหลังจากแทรก

ธง jp

เมื่อพยายามสร้างหนังสือเล่มใหม่ ฉันได้รับข้อความต่อไปนี้:

Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: การละเมิดข้อจำกัดด้านความสมบูรณ์: 1062 รายการซ้ำ '53' สำหรับคีย์ 'หลัก': INSERT INTO "หนังสือ"

ปัญหาที่นี่คือหนังสือถูกเพิ่มสองครั้ง ดังนั้นหนังสือจึงถูกสร้างขึ้นเพียงครั้งเดียวและสำหรับอีกเล่มหนึ่ง ฉันได้รับข้อความด้านบน

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

ถูกต้องไหมที่วิธีเดียวที่เรียก hook_node_update คือการใช้ บันทึก() คำสั่งในรหัส? ฉันพยายามค้นหาสิ่งนี้ในขณะนี้ แต่ไม่มีโมดูลใดที่ใช้คำสั่งนี้ดูเหมือนจะเป็นปัญหา

ใครสามารถช่วยฉันในขั้นต่อไปในการแก้ปัญหานี้

leymannx avatar
ne flag
ตรวจสอบ contrib และโมดูลที่กำหนดเองสำหรับ hook_entity_insert, hook_book_insert hook_entity_presave, hook_book_presave เป็นต้น และ $entity->save(), $book->save() เป็นต้น
Joost avatar
jp flag
ดังนั้นฉันจึงมองหา `save()` ที่ด้านหนึ่งของตะขอใช่ไหม
leymannx avatar
ne flag
อ่าใช่ save() ใน hook_node_update ที่กำหนดเองบางอย่างฟังดูน่าสงสัย สิ่งนี้น่าจะเกิดขึ้นใน hook_node_presave ด้วย set()
Joost avatar
jp flag
ฉันดูโมดูลทั้งหมดของฉันแล้ว แต่ไม่พบ `save()` ที่วางผิดที่ เป็นไปได้ไหมที่จะทำในทางกลับกัน? ฉันสามารถทราบได้หรือไม่ว่าโมดูลใด...ชิ้นส่วนของโค้ดกำลังอัปเดตโหนดของฉัน
leymannx avatar
ne flag
ไม่มีความคิดในขณะนี้ ฉันอาจจะเริ่มปิดโมดูลที่กำหนดเองทีละรายการ จากนั้นดำเนินการต่อด้วย contrib จนกว่าคุณจะพบผู้กระทำผิด
Joost avatar
jp flag
ฉันจะลองวิธีการนั้น ขอบคุณ
Score:5
ธง tr

You could implement hook_module_implements_alter to list all modules that implement a specific hook this way:

function myModule_module_implements_alter(&$implementations, $hook) {
  if ($hook === 'entity_insert') {
    // List of all modules names that implement hook_entity_insert.
    dump(array_keys($implementations));
  }
}

โพสต์คำตอบ

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