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 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 |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__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 |
属性详情
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'
Maps column types to database method
Whether to set the update attribute to the creation timestamp upon creation. Otherwise it will be left alone. Defaults to false.
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.
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'
方法详情
public void beforeSave(CModelEvent $event)
| ||
$event | CModelEvent | event parameter |
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
protected mixed getTimestampByAttribute(string $attribute)
| ||
$attribute | string | $attribute |
{return} | mixed | timestamp (eg unix timestamp or a mysql function) |
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
protected mixed getTimestampByColumnType(string $columnType)
| ||
$columnType | string | $columnType |
{return} | mixed | timestamp (eg unix timestamp or a mysql function) |
protected function getTimestampByColumnType($columnType) {
return isset(self::$map[$columnType]) ? new CDbExpression(self::$map[$columnType]) : time();
}
Returns the appropriate timestamp depending on $columnType