cakePHP timestamp字段未正确保存

时间:2011-03-22 22:25:53

标签: mysql cakephp timestamp default-value

我有一个带有timestamp字段的记录,其默认值在mySql db中定义为current_timestamp。 我使用代码:

$this->Ad->Click->create();
$this->Ad->Click->set('ad_id',  $id);
$this->Ad->Click->save($this->data);

保存记录后,timestamp字段保持00:00:00。 那是为什么?

当然,据我所知,我可以使用php时间函数在查询中设置字段值或mySQL函数..但我更喜欢'satandard way'。

2 个答案:

答案 0 :(得分:3)

如果将字段名称设置为“created”,Cake将在创建记录时自动使用当前日期时间。

http://book.cakephp.org/view/1015/created-and-modified

答案 1 :(得分:2)

在进一步研究该问题后,CakePHP处理CURRENT_TIMESTAMP关键字的方式存在问题

  

“但CakePHP不理解CURRENT_TIMESTAMP关键字,因此将其视为字符串并将其包装在引号中。” - http://techlog.p2061.org/2009/04/17/cakephp-and-current_timestamp/

要在数据库中启用默认行为,您可以将要在DB中设置的字段列入黑名单,以便CakePHP不处理它:http://nuts-and-bolts-of-cakephp.com/2009/03/11/blacklist-your-model-fields-for-save/

虽然黑名单有效,但我决定采用在保存之前设置字段值的方法。在这种情况下,确保应用服务器和数据库服务器的时间同步非常重要!

$this->data['Ad']['time'] = date('c');

我知道你说这不是你想要的,但在我看来似乎有点容易修复。