অ স্ব-বর্ধিত প্রাথমিক কী সহ টেবিলগুলি


9

আমি ম্যাজেন্টোতে একটি টেবিল সেট আপ করেছি যার আইডি এবং তারিখ দুটি ক্ষেত্র রয়েছে। তারিখটি কেবল এখনই সেট করা হয়েছে তবে আইডিটি আসলে অর্ডার আইডির সাথে সংযুক্ত একটি বিদেশী কী।

আমার সমস্যা হ'ল ম্যাজেন্টো এই বিষয়গুলি সংরক্ষণ করে না, কোনও ত্রুটি ঘটে না তবে ডাটাবেসে কোনও কিছুই যুক্ত হয় না।

উত্তর:


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 আবার upvote হবে।
বেনমার্কগুলি

@ বেনমার্কগুলি এখনও আমাকে অবাক করে দেয় যে আমি এই ধরণের জিনিসকেই হোঁচট খাচ্ছি
ডেভিড ম্যানার্স

কি ভাল উত্তর এবং প্রশ্ন +1 প্রশ্নোত্তর জন্য উত্তর
অমিত বেরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.