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::save
Anda 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 $_isPkAutoIncrement
sumber daya Model saya untuk false dan Magento akan menyimpan PK dalam data dan menyimpannya ke dalam tabel.