Score:0

ฉันจะเพิ่มและบันทึกค่าจำนวนเต็มในการดำเนินการครั้งเดียวเพื่อหลีกเลี่ยงสภาวะการแย่งชิงได้อย่างไร

ธง km

ฉันจะเพิ่มและบันทึกค่าจำนวนเต็มในการดำเนินการครั้งเดียวเพื่อหลีกเลี่ยงสภาวะการแย่งชิงได้อย่างไร

ด้วย MySQL ฉันสามารถใช้แบบสอบถามต่อไปนี้

INSERT ลงใน mytable (เข้าสู่ระบบ)
 เลือกสูงสุด (เข้าสู่ระบบ) + 1
 จาก mytable

ฉันกำลังใช้รหัสต่อไปนี้

$query = \Drupal::entityQuery('node')->condition('type', 'bond')
  ->เงื่อนไข ('field_para_identifier.entity:paragraph.field_bond_pending_id', 'NULL', 'ไม่เป็นโมฆะ')
  ->sort('field_para_identifier.entity:paragraph.field_bond_pending_id', 'DESC')
  ->ช่วง(0, 1);
$results = $query->execute();
$biggest_pending_id_entity_id = array_pop(ผลลัพธ์ $);
$next_pending_id = 1;

ถ้า ($biggest_pending_id) {
  $next_pending_id = intval($biggest_pending_id) + 1;
}

$identifier = $bond->get('field_para_identifier')->getValue();
$identifierParagraph = ย่อหน้า::load($identifier[0]['target_id']);
$identifierParagraph->set('field_bond_pending_id', $next_pending_id);
$identifierParagraph->save();
Jaypan avatar
de flag
คุณสามารถใช้ธุรกรรมที่มีการย้อนกลับ: https://www.drupal.org/docs/drupal-apis/database-api/database-transactions

โพสต์คำตอบ

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