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

发布于 2024-12-01 23:16:36 字数 88 浏览 2 评论 0原文

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

I am looking for a method that will be called before/after insert() or update() in Zend_DB? I am don't want to relly on database trigger for this ... could you help me ? thank you !!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

睫毛溺水了 2024-12-08 23:16:36

只需重写 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';
}

Just override the insert() and update() methods in your Table class.

For example:

<?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);
    }
}

If you want to do it for all your table objects then you could have a base class that they all extend such as:

<?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);
    }
}

And then a class to use it:

<?php
class ObjectNameTable extends BaseTable {
    protected $_name = 'table_name'; // table name
    protected $_primary = 'id';
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文