TYPO3会不时重置一个字段中的所有日期时间

时间:2016-01-20 08:32:38

标签: typo3 extbase

我在几个月前写的一个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)。

  • 没有活动的cron作业
  • 我没有手动设置日期(仅限于extbase依赖注入机制)

我不知道为什么会发生这种情况或者它被解雇了。它自11月份推出以来发生了三次。

更奇怪的是:Evendo所有'date'值都会更新,现在显示01.01.1970的日期值,值不同(那些是整数)并显示2的指数(从128开始)或组合那些(eq 1'792(1024 + 512 + 256))

我唯一可以复制的东西: 当一个课程文件从一个系统文件夹移动到另一个系统文件夹时,该项目的日期(但不是所有项目的日期,如同另一个错误)将下降到1.1.1970

如果有人可以帮助我,即使有暗示或怀疑,可能会出现什么问题,或者为什么会发生这种情况,我会很高兴。每次导入另一个备份后,滴答作响的定时炸弹的感觉根本不是那么闪亮;)

提前致谢 XAN

2 个答案:

答案 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默认使用两倍的倍数。