Magento中save()操作機制(_beforesave,_aftersave)

每個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()操作,這裏是對一些數據(我理解的是非主表的數據表)中的一些數據進行保存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章