Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将defaultValue指定为";现在";对于推进中的时间戳列?_Php_Datetime_Timestamp_Propel - Fatal编程技术网

Php 如何将defaultValue指定为";现在";对于推进中的时间戳列?

Php 如何将defaultValue指定为";现在";对于推进中的时间戳列?,php,datetime,timestamp,propel,Php,Datetime,Timestamp,Propel,这是我对推进模式的表定义。列modified具有timestamp类型(DateTime在PHP中),我想现在为它指定一个默认值。我已尝试将其设置为“现在”,但使用spreep gen insert sql命令时出错: “Syntaxt错误或访问冲突:1067的默认值无效。” “修改” 有人知道我如何将spreep中的timestamp列的默认值设置为now吗 <table name="mashup_setting"> <!-- omitted previous colu

这是我对推进模式的表定义。列
modified
具有
timestamp
类型(
DateTime
在PHP中),我想现在为它指定一个默认值。我已尝试将其设置为“现在”,但使用
spreep gen insert sql
命令时出错:

“Syntaxt错误或访问冲突:1067的默认值无效。” “修改”

有人知道我如何将spreep中的timestamp列的默认值设置为now吗

<table name="mashup_setting">
   <!-- omitted previous column definition -->
   <column name="modified" type="timestamp" required="true" defaultValue="now" />
</table>

将名称更改为“updated_at”,这是“推进”中的一个特殊字段,每当您更新该字段时,该字段将自动更新为NOW()。“created_at”也类似,并在创建对象时执行相同的操作

在您的模型中,您可以始终将“modified”或getModified()代理到getUpdatedAt()以完成您的功能

如果你必须把“修改”作为你专栏的名称,你需要写一个行为,我认为这是你需要完成的更多工作。你可以在这里找到关于行为的信息


在较新的推进版本中,您可以这样指定您的列:

<column name="created" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />

然后它就可以跨数据库兼容。

中的文档没有指定1.6中是否有此功能,而是将其添加到架构和构建中:

<behavior name="timestampable" />

这应该是公认的答案,因为它更准确!同意,这更准确,应该是公认的答案
$obj->save();
echo $obj->getCreatedAt(); // 2009-10-02 18:14:23
echo $obj->getUpdatedAt(); // 2009-10-02 18:14:25