Zend Framework: как создать триггер «до / после» вставки / обновления - PullRequest
2 голосов
/ 30 августа 2011

Я ищу метод, который будет вызываться до / после insert () или update () в Zend_DB? Я не хочу полагаться на триггер базы данных для этого ... не могли бы вы мне помочь? спасибо !!!

1 Ответ

4 голосов
/ 30 августа 2011

Просто переопределите методы insert() и update() в вашем классе Table.

Например:

<?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';
}
...