代码之家  ›  专栏  ›  技术社区  ›  Tahir

Zend框架模型中是否有beforeSave或afterSave方法?

  •  0
  • Tahir  · 技术社区  · 8 年前

    Zend框架模型中是否有beforeSave或afterSave方法?

    class VendorReject extends Zend_Db_Table
    {
        protected $_name = 'VendorRejects';
    }
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   Daniel Gadawski    8 年前

    您可以覆盖 _insert() _postInsert() Zend_Db_Table_Row_Abstract的方法。

    class Row_VendorReject extends Zend_Db_Table_Row
    {
        protected function _insert()
        {
            $rejectionDate = $this->rejection_date;
            // do something here
    
            parent::_insert();
        }
    
        protected function _postInsert()
        {
            parent::_postInsert();
    
            // some postprocessing
        }
    }
    

    然后填充 _rowClass 模型中具有新类名的字段:

    class VendorReject extends Zend_Db_Table
    {
        protected $_name = 'VendorRejects';
        protected $_rowClass = 'Row_VendorReject';
    }
    

    现在,每次你调用 save() 在row上,这些方法也将被调用(在insert/update之前和之后)。

    如果您需要这种更新功能,也有 _update() _postUpdate() 方法。

        2
  •  0
  •   Tahir    7 年前

    另一个简单的方法是重写模型插入/更新方法。

    保存示例代码之前:

    class VendorReject extends Zend_Db_Table
    {
        protected $_name = 'VendorRejects';
    
        // Override parent method
        public function insert(array $data)
        {
           // Add your code here that will execute before insert operation
    
            return parent::insert($data);
        }
    }
    

    保存后示例代码:

    class VendorReject extends Zend_Db_Table
    {
        protected $_name = 'VendorRejects';
    
        // Override parent method
        public function insert(array $data)
        {
            parent::insert($data);
    
            // Add your code here that will execute after insert operation
    
            return;
    
        }
    }