Tabel dengan kunci primer non-otomatis


9

Saya telah menyiapkan tabel di Magento yang memiliki dua bidang, id dan tanggal. Tanggal hanyalah set ke sekarang tetapi id sebenarnya adalah kunci asing yang melekat pada id pesanan.

Masalah saya adalah bahwa Magento tidak menyimpan objek-objek ini, tidak ada kesalahan terjadi tetapi tidak ada yang ditambahkan ke database.

Jawaban:


16

Masalahnya di sini adalah bagian dari pemeriksaan fungsi penyimpanan sumber daya magento jika kunci primer diatur ke kenaikan otomatis dan kemudian menghapusnya dari data yang disimpan jika ini masalahnya.

Di Mage_Core_Model_Resource_Db_Abstract::saveAnda dapat melihat bagaimana itu berurusan dengan$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));
    }
}

Jadi untuk memperbaiki masalah saya, saya hanya perlu mengatur $_isPkAutoIncrementsumber daya Model saya untuk false dan Magento akan menyimpan PK dalam data dan menyimpannya ke dalam tabel.


10/10 akan terunggah lagi.
patokan

@Penanda, masih mengherankan saya bahwa saya menemukan hal
David Manners

jawaban dan pertanyaan yang bagus + 1 untuk Q&A
Amit Bera
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.