这是我对Propel架构的表定义。列modified
具有timestamp
类型(PHP中为DateTime
),我想将默认值分配给 now 。我已经尝试将其设置为“now”但我使用propel-gen insert-sql
命令收到错误:
“语法错误或访问冲突:1067默认值无效 '修改的'。
任何人都知道如何为Propel中的timestamp列设置默认值?
<table name="mashup_setting">
<!-- omitted previous column definition -->
<column name="modified" type="timestamp" required="true" defaultValue="now" />
</table>
答案 0 :(得分:13)
在较新的Propel版本中,您可以像这样指定列:
<column name="created" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />
然后交叉数据库兼容。
答案 1 :(得分:5)
将名称更改为&#34; updated_at&#34;这是Propel中的一个特殊字段,每当您更新字段时,它将自动更新为NOW()。 &#34; created_at&#34;也是类似的,并且在创建对象时也会做同样的事情。
在您的模型中,您始终可以代理&#34;修改&#34;或getModified()到getUpdatedAt()以完成您的功能。
如果你必须修改&#34;&#34;作为列的名称,您需要编写一个行为,我认为这是完成此任务所需的更多工作。您可以在此处找到有关行为的信息。
答案 2 :(得分:2)
http://propelorm.org/behaviors/timestampable.html处的文档未指定1.6中是否可用,但将其添加到架构和构建中:
<behavior name="timestampable" />
该模型现在有两个新列,created_at和updated_at,用于存储在保存时自动更新的时间戳:
$obj->save();
echo $obj->getCreatedAt(); // 2009-10-02 18:14:23
echo $obj->getUpdatedAt(); // 2009-10-02 18:14:25