【问题标题】:Another automagic date field like created and updated in CakePHP另一个自动日期字段,例如在 CakePHP 中创建和更新
【发布时间】:2012-04-13 01:22:53
【问题描述】:

我已经知道我可以在数据库表中创建名为“created”和“updated”的字段,并且 Cake 会自动插入适当的值。

但是,我想做的是创建一个名为“跟进”的新字段,并让 Cake 自动插入今天的日期加上 2 周,每当插入新记录时。换句话说,它就像创建日期一样,但在未来 2 周。

我知道我可以在控制器中手动执行此操作,但我想知道是否有办法在模型/行为级别执行此操作,以便无论哪个控制器操作正在创建新记录,它都会自动发生。

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    您可以简单地在模型中使用beforeSave 回调:

    public function beforeSave(array $options) {
        if (empty($this->data[$this->alias]['id']) && !$this->id) {
            $this->data[$this->alias]['followup'] = date('Y-m-d H:i:s', strtotime('+2 weeks'));
        }
        return true;
    }
    

    这会自动将followup 日期添加到任何新记录(不包括id)。

    【讨论】:

    • 谢谢@deceze——这正是我想做的。我有一种感觉,它会是这样的,但我在这方面的知识仍然有点有限。感谢您帮助我扩展对事物的理解!
    • 您也可以将此行为设置为用于多张桌子并保持干燥和蛋糕状。您可以从具有类似功能的现有行为中获得一些想法 - 例如“WhoDidIt”行为等。
    • 谢谢@mark - 实际上,我正要开始将一些审计功能集成到我的应用程序中,所以感谢您指出 WhoDidIt - 这将是一个很大的帮助。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多