每個save執行時都會要執行幾步操作,如下:
public function save()
_beforesave()
_resource{
_beforesave()
save
_aftersave()
}
_aftersave
public function save()
{
...
try {
$this->_beforeSave();
if ($this->_dataSaveAllowed) {
$this->_getResource()->save($this);
$this->_afterSave();
}
}
...
}
protected function _beforeSave(Mage_Core_Model_Abstract $object)
{
if (!$object->getId()) {
$object->setCreatedAt(Mage::getSingleton('core/date')->gmtDate());
}
return $this;
}
protected function _afterSave(Mage_Core_Model_Abstract $object)
{
$adapter = $this->_getWriteAdapter();
......
return $this;
}
這裏的resource裏面的_beforesave()裏面可以看作是save的預處理,在這裏可以加入一些只要執行就要自動保存的數據作爲預處理,例如:
if (!$object->getId()) {
$object->setCreatedAt(Mage::getSingleton('core/date')->gmtDate());
}
這裏就是在預處理created_at字段直接進行保存,_beforesave()之後執行save操作,然後執行_aftrsave()操作,這裏是對一些數據(我理解的是非主表的數據表)中的一些數據進行保存。