zend框架:如何在插入/更新之前/之后创建触发器

时间:2011-08-30 09:10:44

标签: php database zend-framework zend-db zend-db-table

我正在寻找一个将在Zend_DB中的insert()或update()之前/之后调用的方法?我不想依赖数据库触发器......你能帮助我吗?谢谢!!!

1 个答案:

答案 0 :(得分:4)

只需覆盖Table类中的insert()update()方法。

例如:

<?php
class ObjectNameTable extends Zend_Db_Table_Abstract {
    protected $_name = 'table_name'; // table name
    protected $_primary = 'id';

    public function insert(array $data) {
        $data['added'] = date('Y-m-d H:i:s');
        return parent::insert($data);
    }

    public function update(array $data, $where) {
        $data['updated'] = date('Y-m-d H:i:s');
        return parent::update($data, $where);
    }
}

如果你想为你的所有表对象做这个,那么你可以有一个它们都扩展的基类,如:

<?php
class BaseTable extends Zend_Db_Table_Abstract {
    public function insert(array $data) {
        $data['added'] = date('Y-m-d H:i:s');
        return parent::insert($data);
    }

    public function update(array $data, $where) {
        $data['updated'] = date('Y-m-d H:i:s');
        return parent::update($data, $where);
    }
}

然后是一个使用它的课程:

<?php
class ObjectNameTable extends BaseTable {
    protected $_name = 'table_name'; // table name
    protected $_primary = 'id';
}