我在几个月前写的一个extbase扩展有问题: Normaly一切正常,但在某些时候,系统会将某个字段的所有DateTime信息更新回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)。
我不知道为什么会发生这种情况或者它被解雇了。它自11月份推出以来发生了三次。
更奇怪的是:Evendo所有'date'值都会更新,现在显示01.01.1970的日期值,值不同(那些是整数)并显示2的指数(从128开始)或组合那些(eq 1'792(1024 + 512 + 256))
我唯一可以复制的东西: 当一个课程文件从一个系统文件夹移动到另一个系统文件夹时,该项目的日期(但不是所有项目的日期,如同另一个错误)将下降到1.1.1970
如果有人可以帮助我,即使有暗示或怀疑,可能会出现什么问题,或者为什么会发生这种情况,我会很高兴。每次导入另一个备份后,滴答作响的定时炸弹的感觉根本不是那么闪亮;)
提前致谢 XAN
答案 0 :(得分:0)
我会将其添加为评论,但我不允许(因为我的声誉)。
我期望来自php的DateTime对象的问题以及它如何存储在存储库中。 mysql字段是一个int。来自php的DateTime不是整数,而是一个对象。在将DateTime保存到数据库之前,可能需要将DateTime转换为时间戳(=整数)。
答案 1 :(得分:0)
我认为你的最后一句话指出了解决方案:
更奇怪的事情:Evendo all' date' -values更新并显示01.01.1970的日期值,值不同(这些是整数)并显示2的指数(从128)或其组合(eq 1' 792(1024 + 512 + 256))
我怀疑在您的表格设置的ctrl
部分,您将date
字段设置为sorting
列。因此,在移动记录时,TYPO3将更改相应的值以确保记录的正确排序,例如在后端列表中或选择前端输出的记录时。为了便于在某处插入记录(而不必重新排序所有内容),TYPO3默认使用两倍的倍数。