Yii 1.1: AutoTimestampBehavior

3 followers

Note: currently a variant of this class CTimestampBehavior is included into Yii distribution package.

This behavior will automatically set timestamp fields to the row creation and modification times.

<?php
class AutoTimestampBehavior extends CActiveRecordBehavior {
 
    /**
    * The field that stores the creation time
    */
    public $created = 'created';
    /**
    * The field that stores the modification time
    */
    public $modified = 'modified';
 
 
    public function beforeValidate($on) {
        if ($this->Owner->isNewRecord)
            $this->Owner->{$this->created} = new CDbExpression('NOW()');
        else
            $this->Owner->{$this->modified} = new CDbExpression('NOW()');
 
        return true;    
    }
}

Installing to a model

Drop the following into your model to install it:

public function behaviors(){
    return array(
        'AutoTimestampBehavior' => array(
            'class' => 'application.components.AutoTimestampBehavior',
            //You can optionally set the field name options here
        )
    );
}

Links

Russian Version

Total 1 comment

#1617 report it
Eliovir at 2009/06/02 05:01pm
standard SQL

I'm used to write the constant CURRENT_TIMESTAMP, it works in PostgreSQL and MySQL and SQLite.

Leave a comment

Please to leave your comment.

Write new article
  • Written by: jonah
  • Updated by: Yang He
  • Category: Tutorials
  • Yii Version: 1.1
  • Votes: +2 / -2
  • Viewed: 10,343 times
  • Created on: Feb 19, 2009
  • Last updated: Jun 29, 2012