TYPO3 时不时重置一个Field中的所有DateTimes
TYPO3 resets all DateTimes in one Field from time to time
我几个月前写的 extbase 扩展有问题:
通常一切正常,但在某些时候,系统会在 table.
的每个条目中将某个字段的所有日期时间信息更新回 1.1.1970
课程有模型。这些包含三个 DateTime 字段。课程的日期、开始和结束。问题仅发生在日期字段中。在模型中,它是这样定义的:
/**
* date
*
* @var \DateTime
*/
protected $date = NULL;
**
* Returns the date
*
* @return \DateTime $date
*/
public function getDate() {
return $this->date;
}
/**
* Sets the date
*
* @param \DateTime $date
* @return void
*/
public function setDate(\DateTime $date) {
$this->date = $date;
}
在TCA中,定义是:
'date' => array(
'exclude' => 1,
'label' => 'shortend for example',
'config' => array(
'type' => 'input',
'size' => 7,
'eval' => 'date',
'checkbox' => 1,
'default' => time()
),
),
在数据库(MySQL)中,字段设置为INT(11)。
- 没有活动的 cron 作业
- 我没有在任何地方手动设置日期(仅通过 extbase 依赖注入机制)
我不知道为什么会发生这种情况,也不知道它是由什么触发的。自11月页面上线以来,已经发生了3次。
还有一件奇怪的事:Evendo 所有 'date' 值都已更新,现在显示 01.01.1970 的日期值,值不同(这些是整数)并显示 2 的幂(从 128 开始) ) 或它们的组合 (e.q. 1'792 (1024 + 512 + 256))
我唯一可以复制的东西:
当一个课程项目从一个系统文件夹移动到另一个系统文件夹时,这个项目的日期(但不是所有的,就像在另一个错误中一样)下降到 1.1.1970
如果有人能帮助我,即使有提示或怀疑,我会很高兴,可能是错的或为什么会发生。每次导入另一个备份后,都有一种定时炸弹滴答作响的感觉,一点也不闪亮;)
提前致谢
xan
我想将其添加为评论,但我不允许(因为我的声誉)。
我预计 php 中的 DateTime 对象及其在存储库中的存储方式存在问题。 mysql 字段是一个整数。来自 php 的 DateTime 不是整数,而是一个对象。也许您需要在将 DateTime 保存到数据库之前将其转换为时间戳(= 整数)。
我认为你最后的话指出了解决方案:
A furthermore strange thing: Evendo all 'date'-values are updated and show now a datevalue for the 01.01.1970, the values are different (those are integers) and display exponentiations of 2 (starting at 128) or combinations of those (e.q. 1'792 (1024 + 512 + 256))
我怀疑在 table 设置的 ctrl
部分中,您将 date
字段设置为 sorting
列。因此,当移动一条记录时,TYPO3 会更改相应的值以确保记录的正确排序,例如在后端列表中或为前端输出选择记录时。为了便于在某处插入记录(并且不必重新排序 所有内容 ),TYPO3 默认使用 2 的倍数。
我几个月前写的 extbase 扩展有问题: 通常一切正常,但在某些时候,系统会在 table.
的每个条目中将某个字段的所有日期时间信息更新回 1.1.1970课程有模型。这些包含三个 DateTime 字段。课程的日期、开始和结束。问题仅发生在日期字段中。在模型中,它是这样定义的:
/**
* date
*
* @var \DateTime
*/
protected $date = NULL;
**
* Returns the date
*
* @return \DateTime $date
*/
public function getDate() {
return $this->date;
}
/**
* Sets the date
*
* @param \DateTime $date
* @return void
*/
public function setDate(\DateTime $date) {
$this->date = $date;
}
在TCA中,定义是:
'date' => array(
'exclude' => 1,
'label' => 'shortend for example',
'config' => array(
'type' => 'input',
'size' => 7,
'eval' => 'date',
'checkbox' => 1,
'default' => time()
),
),
在数据库(MySQL)中,字段设置为INT(11)。
- 没有活动的 cron 作业
- 我没有在任何地方手动设置日期(仅通过 extbase 依赖注入机制)
我不知道为什么会发生这种情况,也不知道它是由什么触发的。自11月页面上线以来,已经发生了3次。
还有一件奇怪的事:Evendo 所有 'date' 值都已更新,现在显示 01.01.1970 的日期值,值不同(这些是整数)并显示 2 的幂(从 128 开始) ) 或它们的组合 (e.q. 1'792 (1024 + 512 + 256))
我唯一可以复制的东西: 当一个课程项目从一个系统文件夹移动到另一个系统文件夹时,这个项目的日期(但不是所有的,就像在另一个错误中一样)下降到 1.1.1970
如果有人能帮助我,即使有提示或怀疑,我会很高兴,可能是错的或为什么会发生。每次导入另一个备份后,都有一种定时炸弹滴答作响的感觉,一点也不闪亮;)
提前致谢 xan
我想将其添加为评论,但我不允许(因为我的声誉)。
我预计 php 中的 DateTime 对象及其在存储库中的存储方式存在问题。 mysql 字段是一个整数。来自 php 的 DateTime 不是整数,而是一个对象。也许您需要在将 DateTime 保存到数据库之前将其转换为时间戳(= 整数)。
我认为你最后的话指出了解决方案:
A furthermore strange thing: Evendo all 'date'-values are updated and show now a datevalue for the 01.01.1970, the values are different (those are integers) and display exponentiations of 2 (starting at 128) or combinations of those (e.q. 1'792 (1024 + 512 + 256))
我怀疑在 table 设置的 ctrl
部分中,您将 date
字段设置为 sorting
列。因此,当移动一条记录时,TYPO3 会更改相应的值以确保记录的正确排序,例如在后端列表中或为前端输出选择记录时。为了便于在某处插入记录(并且不必重新排序 所有内容 ),TYPO3 默认使用 2 的倍数。