如何在cakephp 3中为整数字段(创建,修改)自动添加unix时间戳

时间:2015-09-07 16:31:06

标签: cakephp cakephp-3.0 unix-timestamp

在cakephp 2中,有一种魔术方法可以使用unix时间戳自动填充createdmodified列。但是在cakephp 3中只有TimestampBehavior创建datetime而不是unixtime整数值int

请提供一个解决方案,通过cakephp 3中的unix timestamp值,将类型为created的{​​{1}}和modified列神奇地填充。

由于

P.S。 这是我的db表架构

int

2 个答案:

答案 0 :(得分:4)

使用TimestampBehavior

  

时间戳行为允许表对象更新每个模型事件的一个或多个时间戳。这主要用于将数据填充到创建和修改的字段中。但是,通过一些其他配置,您可以更新表发布的任何事件的任何timestamp / datetime列。

class ArticlesTable extends Table
{
    public function initialize(array $config)
    {
        $this->addBehavior('Timestamp');
    }
}

首先看一下手册总是一个好主意。在Cake3中还有许多其他类似的方式发生了变化。我建议您阅读迁移指南,它会让您了解更改,并且有很多。

答案 1 :(得分:0)

[CakePHP 3.5.8]我正在从CakePHP 2.x转换的应用程序的数据库中createdmodified列有BIGINT个类型

使用beforeSave()

中的Models\ModelnameTable.php方法结束
public function beforeSave($event, $entity, $options)
{
    if ($entity -> modified instanceof Time) {
        $entity -> modified = $entity -> modified -> toUnixString();
    }

    if ($entity->created instanceof Time) {
        $entity->created = $entity->created->toUnixString();
    }
}