我在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'));
这是一个错误吗?难道我做错了什么?为什么两个相等的对象以不同的方式行为?
我应该重命名表格和/或字段吗?
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
解决!
简单的事实:错误是因为一个时间列返回NULL
而触发的当你看到它时看起来很容易:)