FrozenTime对象的错误

时间:2017-07-14 21:38:48

标签: php mysql object cakephp time

我在FrozenTime对象中发现了一个奇怪的案例。

我从find()获取数据,并像往常一样将其发送到视图。一个特定字段来自MySQL时间列。

表名为sessions,字段名为time

当迭代结果集时,该列变为:

object(Cake\I18n\FrozenTime) {

    'time' => '2017-07-14T01:00:50+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false

}

调用debug($session->time->format('G:i:s'));时会出现这种错误。有了这个,我得到一个调用成员函数格式()null 错误。

在尝试解决问题时,我做了:

$moment = $session->time;
debug($moment instanceof \Cake\I18n\FrozenTime);

我得到一个true作为答案。如果它实际上是一个包含内容的对象,则奇怪为null(如错误所示)。我希望能够在FrozenTime对象上运行->format()

跑步时更加奇怪:

$b = new Cake\I18n\FrozenTime($moment);
debug($b);
debug($moment == $b);

debug($b);返回上面显示的同一个对象(Cake \ I18n \ FrozenTime),debug($moment == $b);返回true。你猜怎么着? $b->format('G:i:s');此时正常工作,它会返回1:00:50之类的内容(正如我在调用$session->time->format('G:i:s'));

时期望的那样

这是一个错误吗?难道我做错了什么?为什么两个相等的对象以不同的方式行为?

我应该重命名表格和/或字段吗?

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

解决!

简单的事实:错误是因为一个时间列返回NULL

而触发的

当你看到它时看起来很容易:)