几个月前我写过的一个扩展出现了问题: 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;
}在“技术合作协定”中,定义是:
'date' => array(
'exclude' => 1,
'label' => 'shortend for example',
'config' => array(
'type' => 'input',
'size' => 7,
'eval' => 'date',
'checkbox' => 1,
'default' => time()
),
),在数据库(MySQL)中,字段设置为INT(11)。
我不知道为什么会发生这种事,也不知道是怎么被解雇的。自去年11月这一网页发布以来,这一事件已经发生了三次。
还有一个更奇怪的事情:所有的“日期”--值被更新,现在显示01.01.1970的一个数据值,值是不同的(那些是整数),显示2的指数(从128开始)或这些值的组合(e.q )。1'792 (1024 + 512 +256)
我唯一能再现的事情是:当一个课程项目从一个系统文件夹移动到另一个系统文件夹时,这个项目的日期(但不是所有的,比如另一个错误)下降到1.1.1970。
如果有人能帮助我,即使有暗示或怀疑,我也会非常高兴,因为有什么可能是错的,为什么会发生这种情况。定时炸弹的感觉,每次在导入另一个备份后,难道一点也不闪亮;)
提前感谢xan
发布于 2016-09-02 09:25:18
我认为你的最后一句话指出了解决办法:
还有一个更奇怪的事情:所有的“日期”--值被更新,现在显示01.01.1970的一个数据值,值是不同的(那些是整数),显示2的指数(从128开始)或这些值的组合(e.q )。1'792 (1024 + 512 +256)
我怀疑,在表设置的ctrl部分,您将date字段设置为sorting列。因此,在移动记录时,TYPO3将更改相应的值,以确保记录的正确排序,例如在后端列表中或在选择用于前端输出的记录时。为了方便地在某个地方插入记录(而不必重新排序),TYPO3默认使用两倍的倍数。
发布于 2016-01-20 21:44:21
我想添加它作为评论,但我不允许(因为我的名誉)。
我期待来自php的DateTime对象的问题,以及它如何存储在存储库中。mysql字段是一个int。php中的DateTime不是整数,而是一个对象。在将DateTime保存到数据库之前,可能需要将它转换为时间戳(= integer)。
https://stackoverflow.com/questions/34895018
复制相似问题