Yii 1.1 のモデル(CModel)で自動更新する方法のメモ。
参考: Yii 1.1: How to automate timestamps in ActiveRecord models
CActiveRecord::rules()で設定する
/** * @return array validation rules for model attributes. */ public function rules() { return array( // 略 array('modified','default', 'value'=>new CDbExpression('NOW()'), // PHPのタイムスタンプを使うならdate('Y-m-d H:i:s')など 'setOnEmpty'=>false,'on'=>'update'), array('created,modified','default', 'value'=>new CDbExpression('NOW()'), 'setOnEmpty'=>false,'on'=>'insert') ); }
CActiveRecord::beforeSave()で更新する
public function beforeSave() { if ($this->isNewRecord) $this->created = new CDbExpression('NOW()'); <pre><code>$this->modified = new CDbExpression('NOW()'); return parent::beforeSave(); </code></pre> }
CTimestampBehaviorを使う
// CActiveRecord::behaviors() public function behaviors(){ return array( 'CTimestampBehavior' => array( 'class' => 'zii.behaviors.CTimestampBehavior', 'createAttribute' => 'created', // 作成日時のカラム名(デフォルト: create_time) 'updateAttribute' => 'modified', // 更新日時のカラム名(デフォルト: update_time) 'setUpdateOnCreate' => true, // 作成時にupdateカラムも更新するか(デフォルト: false) ) ); }
どれを使うかはお好みですね。