system system.base system.caching system.caching.dependencies system.collections system.console system.db system.db.ar system.db.schema system.db.schema.cubrid system.db.schema.mssql system.db.schema.mysql system.db.schema.oci system.db.schema.pgsql system.db.schema.sqlite system.gii system.i18n system.i18n.gettext system.logging system.test system.utils system.validators system.web system.web.actions system.web.auth system.web.filters system.web.form system.web.helpers system.web.renderers system.web.services system.web.widgets system.web.widgets.captcha system.web.widgets.pagers zii.behaviors zii.widgets zii.widgets.grid zii.widgets.jui

CTimestampBehavior

zii.behaviors
继承 class CTimestampBehavior » CActiveRecordBehavior » CModelBehavior » CBehavior » CComponent
实现 IBehavior
可用自 1.1
源码 framework/zii/behaviors/CTimestampBehavior.php
CTimestampBehavior will automatically fill date and time related attributes.

CTimestampBehavior will automatically fill date and time related attributes when the active record is created and/or updated. You may specify an active record model to use this behavior like so:
public function behaviors(){
	return array(
		'CTimestampBehavior' => array(
			'class' => 'zii.behaviors.CTimestampBehavior',
			'createAttribute' => 'create_time_attribute',
			'updateAttribute' => 'update_time_attribute',
		)
	);
}
The createAttribute and updateAttribute options actually default to 'create_time' and 'update_time' respectively, so it is not required that you configure them. If you do not wish CTimestampBehavior to set a timestamp for record update or creation, set the corresponding attribute option to null.

By default, the update attribute is only set on record update. If you also wish it to be set on record creation, set the setUpdateOnCreate option to true.

Although CTimestampBehavior attempts to figure out on it's own what value to inject into the timestamp attribute, you may specify a custom value to use instead via timestampExpression

公共属性

隐藏继承的属性

属性类型描述被定义在
createAttribute mixed The name of the attribute to store the creation time. CTimestampBehavior
enabled boolean 行为是否被启用。 CBehavior
owner CComponent 此行为被连接到该所有者的组件。 CBehavior
setUpdateOnCreate bool Whether to set the update attribute to the creation timestamp upon creation. CTimestampBehavior
timestampExpression mixed The expression that will be used for generating the timestamp. CTimestampBehavior
updateAttribute mixed The name of the attribute to store the modification time. CTimestampBehavior

受保护的属性

隐藏继承的属性

属性类型描述被定义在
map array Maps column types to database method CTimestampBehavior

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. CComponent
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__unset() Sets a component property to be null. CComponent
asa() Returns the named behavior object. CComponent
attach() 对组件附加行为对象。 CBehavior
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
beforeSave() Responds to CModel::onBeforeSave event. CTimestampBehavior
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
detach() 从组件中分离行为对象。 CBehavior
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
events() Declares events and the corresponding event handler methods. CActiveRecordBehavior
getEnabled() Returns 行为是否被启用。 CBehavior
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getOwner() Returns 此行为被连接到该所有者的组件。 CBehavior
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
raiseEvent() Raises an event. CComponent
setEnabled() Sets 行为是否被启用。 CBehavior

受保护的方法

隐藏继承的方法

方法描述被定义在
afterConstruct() 响应 CModel::onAfterConstruct 事件。 CModelBehavior
afterDelete() Responds to CActiveRecord::onAfterDelete event. CActiveRecordBehavior
afterFind() Responds to CActiveRecord::onAfterFind event. CActiveRecordBehavior
afterSave() Responds to CActiveRecord::onAfterSave event. CActiveRecordBehavior
afterValidate() 响应 CModel::onAfterValidate 事件。 CModelBehavior
beforeCount() Responds to CActiveRecord::onBeforeCount event. CActiveRecordBehavior
beforeDelete() Responds to CActiveRecord::onBeforeDelete event. CActiveRecordBehavior
beforeFind() Responds to CActiveRecord::onBeforeFind event. CActiveRecordBehavior
beforeValidate() 响应 CModel::onBeforeValidate 事件。 CModelBehavior
getTimestampByAttribute() Gets the appropriate timestamp depending on the column type $attribute is CTimestampBehavior
getTimestampByColumnType() Returns the appropriate timestamp depending on $columnType CTimestampBehavior

属性详情

createAttribute 属性
public mixed $createAttribute;

The name of the attribute to store the creation time. Set to null to not use a timestamp for the creation attribute. Defaults to 'create_time'

map 属性
protected static array $map;

Maps column types to database method

setUpdateOnCreate 属性
public bool $setUpdateOnCreate;

Whether to set the update attribute to the creation timestamp upon creation. Otherwise it will be left alone. Defaults to false.

timestampExpression 属性
public mixed $timestampExpression;

The expression that will be used for generating the timestamp. This can be either a string representing a PHP expression (e.g. 'time()'), or a CDbExpression object representing a DB expression (e.g. new CDbExpression('NOW()')). Defaults to null, meaning that we will attempt to figure out the appropriate timestamp automatically. If we fail at finding the appropriate timestamp, then it will fall back to using the current UNIX timestamp.

A PHP expression can be any PHP code that has a value. To learn more about what an expression is, please refer to the php manual.

updateAttribute 属性
public mixed $updateAttribute;

The name of the attribute to store the modification time. Set to null to not use a timestamp for the update attribute. Defaults to 'update_time'

方法详情

beforeSave() 方法
public void beforeSave(CModelEvent $event)
$event CModelEvent event parameter
源码: framework/zii/behaviors/CTimestampBehavior.php#89 (显示)
public function beforeSave($event) {
    if (
$this->getOwner()->getIsNewRecord() && ($this->createAttribute !== null)) {
        
$this->getOwner()->{$this->createAttribute} = $this->getTimestampByAttribute($this->createAttribute);
    }
    if ((!
$this->getOwner()->getIsNewRecord() || $this->setUpdateOnCreate) && ($this->updateAttribute !== null)) {
        
$this->getOwner()->{$this->updateAttribute} = $this->getTimestampByAttribute($this->updateAttribute);
    }
}

Responds to CModel::onBeforeSave event. Sets the values of the creation or modified attributes as configured

getTimestampByAttribute() 方法
protected mixed getTimestampByAttribute(string $attribute)
$attribute string $attribute
{return} mixed timestamp (eg unix timestamp or a mysql function)
源码: framework/zii/behaviors/CTimestampBehavior.php#104 (显示)
protected function getTimestampByAttribute($attribute) {
    if (
$this->timestampExpression instanceof CDbExpression)
        return 
$this->timestampExpression;
    elseif (
$this->timestampExpression !== null)
    {
        try
        {
            return @eval(
'return '.$this->timestampExpression.';');
        }
        catch (
ParseError $e)
        {
            return 
false;
        }
    }

    
$columnType $this->getOwner()->getTableSchema()->getColumn($attribute)->dbType;
    return 
$this->getTimestampByColumnType($columnType);
}

Gets the appropriate timestamp depending on the column type $attribute is

getTimestampByColumnType() 方法
protected mixed getTimestampByColumnType(string $columnType)
$columnType string $columnType
{return} mixed timestamp (eg unix timestamp or a mysql function)
源码: framework/zii/behaviors/CTimestampBehavior.php#129 (显示)
protected function getTimestampByColumnType($columnType) {
    return isset(
self::$map[$columnType]) ? new CDbExpression(self::$map[$columnType]) : time();
}

Returns the appropriate timestamp depending on $columnType