답변:
여기서 문제는 리소스 저장 기능의 일부입니다. 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를 데이터에 보관하고 테이블에 저장합니다.