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.

David Manners
sumber

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.

David Manners
sumber
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