SortableCActiveRecordBehavior
Package | Yii Sortable Model |
---|---|
Inheritance | class SortableCActiveRecordBehavior » CActiveRecordBehavior » CModelBehavior » CBehavior » CComponent |
Implements | IBehavior |
Since | 1.1 |
Source Code | extensions//models/SortableCActiveRecordBehavior.php |
Models having this behavior attached will automatically keep its records order consistent when items are added or deleted.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
enabled | boolean | whether this behavior is enabled | CBehavior |
orderField | string | the field name in the database table which stores the order for the record. | SortableCActiveRecordBehavior |
owner | CComponent | the owner component that this behavior is attached to. | CBehavior |
Public Methods
Method | Description | Defined By |
---|---|---|
__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 |
afterConstruct() | Responds to CModel::onAfterConstruct event. | CModelBehavior |
afterDelete() | Responds to CActiveRecord::onBeforeDelete event. | SortableCActiveRecordBehavior |
afterFind() | Responds to CActiveRecord::onAfterFind event. | CActiveRecordBehavior |
afterSave() | Responds to CActiveRecord::onAfterSave event. | CActiveRecordBehavior |
afterValidate() | Responds to CModel::onAfterValidate event. | CModelBehavior |
asa() | Returns the named behavior object. | CComponent |
attach() | Attaches the behavior object to the component. | 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 |
beforeDelete() | Responds to CActiveRecord::onBeforeDelete event. | CActiveRecordBehavior |
beforeFind() | Responds to CActiveRecord::onBeforeFind event. | CActiveRecordBehavior |
beforeSave() | Responds to CActiveRecord::onBeforeSave event. | SortableCActiveRecordBehavior |
beforeValidate() | Responds to CModel::onBeforeValidate event. | CModelBehavior |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
detach() | Detaches the behavior object from the component. | 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 whether this behavior is enabled | CBehavior |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getOwner() | Returns the owner component that this behavior is attached to. | 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 whether this behavior is enabled | CBehavior |
Property Details
orderField
property
public string $orderField;
the field name in the database table which stores the order for the record. This should be a positive integer field. Defaults to 'order'
Method Details
afterDelete()
method
public void afterDelete(CEvent $event)
| ||
$event | CEvent | event parameter |
Source Code: extensions//models/SortableCActiveRecordBehavior.php#L65 (show)
public function afterDelete($event)
{
$sender = $event->sender;
$model = call_user_func(array(get_class($sender), 'model'));
$following_records = $model->findAll(array(
'order' => '`'.$this->orderField.'` ASC',
'condition' => '`'.$this->orderField.'` > '.$sender->{$this->orderField},
));
foreach ($following_records as $record) {
$record->{$this->orderField}--;
$record->update();
}
return parent::afterDelete($event);
}
Responds to CActiveRecord::onBeforeDelete event. Update records order field in a manner that their values are still successively increased by one (so, there is no gap caused by the deleted record)
beforeSave()
method
public void beforeSave(CModelEvent $event)
| ||
$event | CModelEvent | event parameter |
Source Code: extensions//models/SortableCActiveRecordBehavior.php#L41 (show)
public function beforeSave($event)
{
$sender = $event->sender;
if ($sender->isNewRecord) {
$model = call_user_func(array(get_class($sender), 'model'));
$last_record = $model->find(array(
'order' => '`'.$this->orderField.'` DESC',
'limit' => 1
));
if ($last_record) {
$sender->{$this->orderField} = $last_record->{$this->orderField} + 1;
} else {
$sender->{$this->orderField} = 1;
}
}
return parent::beforeSave($event);
}
Responds to CActiveRecord::onBeforeSave event.