我正在尝试用简单的博客学习蛋糕。我用蛋糕烘烤来制作我的控制器。 Post模型有一个created_date字段,但我想在服务器端设置它(客户端可以篡改它)。我在添加控制器中添加了几行代码,如下所示:
public function add() {
if ($this->request->is('post')) {
$this->Post->create();
date_default_timezone_set("UTC");
$this->request->data['Post']['created_date'] = date("c"); //set create date server side
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(__('The post has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The post could not be saved. Please, try again.'));
}
}
$authors = $this->Post->Author->find('list');
$tags = $this->Post->Tag->find('list');
$this->set(compact('authors', 'tags'));
}
问题是创建的日期根本没有保存,它设置为0000-00-00。我读到的一切都说这应该是好的。即使我查看debugkit,它也会显示post数据在数组中具有正确的created_date。
答案 0 :(得分:5)
如果您遵循cakephp的约定,那么框架将自动为您填充此字段。 您有两种选择:
将您想要的字段重命名为'created'
,并将其设置为日期时间
数据库,如果您不通过发布的数据手动传递值,框架将负责其余的工作
使用此:$this->request->data['Post']['created_date'] = DboSource::expression('NOW()');
答案 1 :(得分:0)
日期的字段类型是什么..是日期时间还是日期..数据库中可接受的格式是什么..您可以尝试在表格中插入一个日期以查看格式。
我有类似的问题,date shows 0000-00-00,但后来我意识到我必须遵循基于数据库的格式。如果您的日期来自表单,只需使用以下内容将其转换为正确的格式。
$date = date('Y-m-d',strtotime($this->request->data['Model']['date']));
相应地更改日期格式。