2012-02-06 5 views
5

Propelスキーマのテーブル定義を以下に示します。カラムmodifiedtimestampタイプ(PHPではDateTime)です。デフォルト値はになりました。に割り当てています。私は「今」を設定しようとしましたが、私はpropel-gen insert-sqlコマンドを使用して、エラーを取得しています:Propelのタイムスタンプ列のdefaultValueを "now"に指定する方法は?

「Syntaxtエラーまたはアクセス違反:。 のための1067無効なデフォルト値を 『修正』

誰もが私はPropelでのタイムスタンプ列のために今にデフォルト値を設定することができます方法を知っている?

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

答えて

5

変更名)を自動的にNOWに更新されますPropelの中で特別なフィールドである「updated_atの」(にあなたが更新するたびにそのフィールド。 "created_at"も似ていて、あなたのオブジェクトが作成されたときに同じことをします。

お使いのモデルでは、機能を完成させるためにgetUpdatedAt()に "modified"またはgetModified()をプロキシすることができます。

カラムの名前を「変更」する必要がある場合は、これを達成するために必要な作業が多いと思います。ここでの行動に関する情報を見つけることができます。新しいPropelのバージョンでは

http://www.symfony-project.org/cookbook/1_2/en/behaviors

11

そんなに好き列を指定することができます。

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

それはその後、クロスデシベル互換性があります。

+0

これは、より正確なものとして受け入れられる回答である必要があります。 – tmuecksch

+0

合意しました、これはより正確で、受け入れられる回答でなければなりません –

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 
+1

ニースの答え、ありがとう! –

関連する問題