Inheritance: extends Illuminate\Database\Eloquent\Model
Beispiel #1
0
 /**
  * The "booting" method of the model.
  *
  * We'll use this method to register event listeners on a Node instance as
  * suggested in the beta documentation...
  *
  * TODO:
  *
  *    - Find a way to avoid needing to declare the called methods "public"
  *    as registering the event listeners *inside* this methods does not give
  *    us an object context.
  *
  * Events:
  *
  *    1. "creating": Before creating a new Node we'll assign a default value
  *    for the left and right indexes.
  *
  *    2. "saving": Before saving, we'll perform a check to see if we have to
  *    move to another parent.
  *
  *    3. "saved": Move to the new parent after saving if needed and re-set
  *    depth.
  *
  *    4. "deleting": Before delete we should prune all children and update
  *    the left and right indexes for the remaining nodes.
  *
  *    5. (optional) "restoring": Before a soft-delete node restore operation,
  *    shift its siblings.
  *
  *    6. (optional) "restore": After having restored a soft-deleted node,
  *    restore all of its descendants.
  *
  * @return void
  */
 protected static function boot()
 {
     parent::boot();
     static::creating(function ($node) {
         $node->setDefaultLeftAndRight();
     });
     static::saving(function ($node) {
         $node->storeNewParent();
     });
     static::saved(function ($node) {
         $node->moveToNewParent();
         $node->setDepth();
     });
     static::deleting(function ($node) {
         $node->destroyDescendants();
     });
     if (static::softDeletesEnabled()) {
         static::restoring(function ($node) {
             $node->shiftSiblingsForRestore();
         });
         static::restored(function ($node) {
             $node->restoreDescendants();
         });
     }
 }
Beispiel #2
0
 /**
  * The "booting" method of the model.
  *
  * We'll use this method to register event listeners on a Node instance as
  * suggested in the beta documentation...
  *
  * TODO:
  *
  *    - Find a way to avoid needing to declare the called methods "public"
  *    as registering the event listeners *inside* this methods does not give
  *    us an object context.
  *
  * Events:
  *
  *    1. "creating": Before creating a new Node we'll assign a default value
  *    for the left and right indexes.
  *
  *    2. "saving": Before saving, we'll perform a check to see if we have to
  *    move to another parent.
  *
  *    3. "saved": Move to the new parent after saving if needed and re-set
  *    depth.
  *
  *    4. "deleting": Before delete we should prune all children and update
  *    the left and right indexes for the remaining nodes.
  *
  *    5. (optional) "restoring": Before a soft-delete node restore operation,
  *    shift its siblings.
  *
  *    6. (optional) "restore": After having restored a soft-deleted node,
  *    restore all of its descendants.
  *
  * @return void
  */
 protected static function boot()
 {
     parent::boot();
     static::flushModelEvents();
 }