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>
}
// 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)
)
);
}
どれを使うかはお好みですね。