गैर ऑटो वेतन वृद्धि प्राथमिक कुंजी के साथ तालिकाएँ


9

मैंने Magento में एक तालिका स्थापित की है जिसमें दो फ़ील्ड, आईडी और दिनांक हैं। तिथि बस अब के लिए सेट है, लेकिन आईडी वास्तव में ऑर्डर आईडी से जुड़ी एक विदेशी कुंजी है।

मेरी समस्या यह है कि Magento इन वस्तुओं को सहेजती नहीं है, कोई त्रुटि नहीं होती है, लेकिन डेटाबेस में कुछ भी नहीं जोड़ा जाता है।

जवाबों:


17

यहां समस्या संसाधन सेव फंक्शन मैगनेटो चेक का हिस्सा है यदि प्राथमिक कुंजी ऑटो वेतन वृद्धि पर सेट है और फिर मामला होने पर सहेजे जा रहे डेटा से इसे हटा देता है।

में Mage_Core_Model_Resource_Db_Abstract::saveआप देख सकते हैं कि यह कैसे के साथ सौदों$this->_isPkAutoIncrement

/**
 * Not auto increment primary key support
 */
if ($this->_isPkAutoIncrement) {
    $data = $this->_prepareDataForSave($object);
    unset($data[$this->getIdFieldName()]);
    $this->_getWriteAdapter()->update($this->getMainTable(), $data, $condition);
} else {
    $select = $this->_getWriteAdapter()->select()
        ->from($this->getMainTable(), array($this->getIdFieldName()))
        ->where($condition);
    if ($this->_getWriteAdapter()->fetchOne($select) !== false) {
        $data = $this->_prepareDataForSave($object);
        unset($data[$this->getIdFieldName()]);
        if (!empty($data)) {
            $this->_getWriteAdapter()->update($this->getMainTable(), $data, $condition);
        }
    } else {
        $this->_getWriteAdapter()->insert($this->getMainTable(), $this->_prepareDataForSave($object));
    }
}

इसलिए अपने मुद्दे को ठीक करने के लिए मुझे बस $_isPkAutoIncrementअपने मॉडल के संसाधन को गलत पर सेट करना होगा और मैगेंटो पीके को डेटा में रखेगा और इसे तालिका में बचाएगा।


10/10 फिर से बढ़ेगा।
बेंचमार्क

@benmarks यह अभी भी मुझे आश्चर्यचकित करता है कि मैं इस तरह की चीजों पर माफी माँगता हूँ
डेविड मैनर्स

क्या एक अच्छा जवाब और क्यू एंड ए के लिए सवाल + 1vote
अमित बेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.