2012-04-13 6 views
0

私はすでにデータベーステーブルに「作成済み」および「更新済み」というフィールドを作成でき、Cakeは自動的に適切な値を挿入することを知っています。CakePHPで作成し更新したような別のオートマチック日付フィールド

しかし、私がしたいことは、 'followup'という新しいフィールドを作成して、新しいレコードが挿入されるたびに日付とプラス2週を自動的に挿入するようにすることです。言い換えれば、それは作成された日付と同じですが、将来2週間です。

私はコントローラでこれを手動で行うことができると知っていますが、モデル/動作レベルでこれを行う方法があれば、新しいコントローラを作成するコントローラのアクションに関係なく自動的に発生します。

答えて

2

あなたは単にモデルでbeforeSaveコールバックを使用することができます。

public function beforeSave(array $options) { 
    if (empty($this->data[$this->alias]['id']) && !$this->id) { 
     $this->data[$this->alias]['followup'] = date('Y-m-d H:i:s', strtotime('+2 weeks')); 
    } 
    return true; 
} 

これは、自動的に(idなし)任意の新しいレコードにfollowup日付を追加します。

+0

ありがとう@deceze - これはまさに私がやりたいことです。私はそれがそれのようなものになるだろうと思ったが、私の知識はまだこの分野では少し限られている。私のことを理解してくれてありがとう! – Joseph

+1

これを複数のテーブルに使用し、乾燥してケーキにしておく動作にすることもできます。 "WhoDidIt"のような機能を持つ既存の動作から得ることができるアイデア。 – mark

+0

ありがとうございます。実際には、私は自分のアプリにいくつかの監査機能を統合しようとしていたので、WhoDidItを指摘してくれてありがとうございます。大きな助けになる。 :-) – Joseph

関連する問題