Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Doctrine2 ORM अपडेट के लिए चुनें

जाहिर है, सिद्धांत 2 MySQL के लिए निराशावादी रीड लॉक के साथ साझा मोड में लॉक का उपयोग करता है, जो अद्यतन के लिए चयन के समान नहीं है।

वर्तमान स्थिर रिलीज के स्रोतों को देखते हुए, ऐसा लगता है कि सिद्धांत में ऐसा करने का कोई मूल तरीका नहीं है (मुझे यकीन नहीं है कि सिद्धांत टीम ने MySQL के लिए उस प्रकार के लॉक को क्यों चुना)।

मैंने मूल SQL का उपयोग वर्कअराउंड के रूप में किया, जिसे पारंपरिक संस्थाओं में मैप किया जा सकता है, जैसा कि यह DQL के साथ होगा:

<?php
$rsm = new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('Model_Record_Delivery', 'u');
$query = $this->_em->createNativeQuery("SELECT * FROM delivery WHERE id = :id FOR UPDATE", $rsm);
$query->setParameter("id", $id);
$result = $query->getOneOrNullResult();

अपडेट करें

जैसा कि बेंजामिन ने बताया है, PESSIMISTIC_WRITE वह है जिसे आप ढूंढ रहे हैं।

डीक्यूएल के साथ

<?php
$query = $this->em->createQuery('SELECT e
    FROM Application\Model\Entity\MyEntity e
    WHERE e = :id');

$query->setParameter("id", $id);
$query->setLockMode(\Doctrine\DBAL\LockMode::PESSIMISTIC_WRITE);

डीक्यूएल के बिना

<?php
$entity = $em->find('Application\Model\Entity\MyEntity', $id, \Doctrine\DBAL\LockMode::PESSIMISTIC_WRITE);

साथ ही, लेन-देन को काम करने के लिए आपको स्टेटमेंट के अंदर स्टेटमेंट का उपयोग करना होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql तालिका को हर चौबीस घंटे में स्वचालित रूप से अपडेट करें

  2. mysql - INSERT दिनांक सीमा दिनांक कॉलम में यदि तिथियां मौजूदा वाले के साथ ओवरलैप नहीं होती हैं

  3. MySQL का उपयोग करके अनुयायियों को चहचहाना प्राप्त करें

  4. .htaccess के साथ URL पुनर्लेखन डुप्लिकेट mysql प्रविष्टियाँ करें

  5. PHP के साथ ON DUPLICATE KEY UPDATE का उपयोग करते समय mysql_insert_id () प्राप्त करना