每个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()操作,这里是对一些数据(我理解的是非主表的数据表)中的一些数据进行保存。