在cakephp 2中,有一种魔术方法可以使用unix时间戳自动填充created
和modified
列。但是在cakephp 3中只有TimestampBehavior
创建datetime
而不是unixtime整数值int
。
请提供一个解决方案,通过cakephp 3中的unix timestamp值,将类型为created
的{{1}}和modified
列神奇地填充。
由于
P.S。 这是我的db表架构
int
答案 0 :(得分:4)
时间戳行为允许表对象更新每个模型事件的一个或多个时间戳。这主要用于将数据填充到创建和修改的字段中。但是,通过一些其他配置,您可以更新表发布的任何事件的任何timestamp / datetime列。
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
}
}
首先看一下手册总是一个好主意。在Cake3中还有许多其他类似的方式发生了变化。我建议您阅读迁移指南,它会让您了解更改,并且有很多。
答案 1 :(得分:0)
[CakePHP 3.5.8]我正在从CakePHP 2.x转换的应用程序的数据库中created
和modified
列有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();
}
}