Answers:
这里的问题是资源保存功能magento的一部分,它检查主键是否设置为自动递增,然后在这种情况下将其从要保存的数据中删除。
在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
我模型的资源设置为false,Magento会将PK保留在数据中并将其保存到表中。