ฉันจะเพิ่มและบันทึกค่าจำนวนเต็มในการดำเนินการครั้งเดียวเพื่อหลีกเลี่ยงสภาวะการแย่งชิงได้อย่างไร
ด้วย 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();