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