Yii Sortable Model Class Reference. Yii Framework

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

Hide inherited properties

PropertyTypeDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined 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.

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.