cakephp中mysql表创建时间字段的混淆
了解我无法自动更新表中创建时间字段的原因: id |名称|创建时间 创建时间--> 类型:时间戳, 默认值:当前时间戳 当我尝试使用如下语句在cakephp中保存数据时:cakephp中mysql表创建时间字段的混淆,mysql,cakephp,datetime,timestamp,Mysql,Cakephp,Datetime,Timestamp,了解我无法自动更新表中创建时间字段的原因: id |名称|创建时间 创建时间--> 类型:时间戳, 默认值:当前时间戳 当我尝试使用如下语句在cakephp中保存数据时: $this->Model->create(); $this->Model->save(array('name'=>'...')); 我将新数据插入到表中,但没有创建时间。当我运行insert-intoMysql语句时,字段会自动更新为当前时间戳,这是不正常的 我知道我可以使用Cakephp文档中
$this->Model->create();
$this->Model->save(array('name'=>'...'));
我将新数据插入到表中,但没有创建时间。当我运行insert-intoMysql语句时,字段会自动更新为当前时间戳,这是不正常的
我知道我可以使用Cakephp文档中创建的字段,但就我而言,我不想更改现有字段名,因为它是在同一项目中工作的其他成员使用的表
请告诉我 在cakephp中,最好在您的案例中使用常规名称,如“created”。 该字段将是datetime类型。但是,如果您想创建自己的字段,则必须使用正常设置示例手动将实际日期和时间插入到字段中:
$this->Model->set('creation_time', CURRENT_TIMESTAMP);
其中,当前_时间戳是您必须创建的变量,在保存模型之后
但是cakephp中最好的方法是使用约定名称,不建议使用非约定名称当您调用
$this->Model->create()
时,Cake使用默认值填充$this->Model
中包含的数据。如果调试$this->Model->data
debug($this->Model->data);
您将看到创建时间已设置,但带有字符串:
array(
'Model' => array(
...,
'creation_time' => 'CURRENT_TIMESTAMP'
)
INSERT INTO `models` (..., `creation_time`, ...) VALUES (..., 'CURRENT_TIMESTAMP', ...)
)
因此,当Cake生成INSERT查询时,该查询包含creation\u time
字段,其中CURRENT\u TIMESTAMP
作为字符串:
array(
'Model' => array(
...,
'creation_time' => 'CURRENT_TIMESTAMP'
)
INSERT INTO `models` (..., `creation_time`, ...) VALUES (..., 'CURRENT_TIMESTAMP', ...)
如果要在数据表中保留创建时间
字段,要生成工作查询,可以在保存数据之前删除默认值:
$this->Model->create();
unset($this->Model->data['Model']['creation_time']);
$this->Model->save(...);
谢谢我在模型文件中编写了一个覆盖函数save(),效果非常好。