我有一个带有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'。
答案 0 :(得分:3)
如果将字段名称设置为“created”,Cake将在创建记录时自动使用当前日期时间。
答案 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');
我知道你说这不是你想要的,但在我看来似乎有点容易修复。