Ejemplo n.º 1
0
 /**
  * After mode was saved we're building node path
  *
  * @param Tree $model
  */
 public function saved(Tree $model)
 {
     if ($model->{$model->getTreeColumn('path')} === '') {
         // If we just save() new node
         $model->{$model->getTreeColumn('path')} = $model->getKey() . '/';
         DB::table($model->getTable())->where($model->getKeyName(), '=', $model->getKey())->update(array($model->getTreeColumn('path') => $model->{$model->getTreeColumn('path')}));
     }
 }
Ejemplo n.º 2
0
 /**
  * Updating descendants nodes
  *
  * @param Tree       $node           Updated node
  * @param Collection $oldDescendants Old descendants collection (just before modify parent)
  */
 protected function updateDescendants(Tree $node, $oldDescendants)
 {
     $refs = [];
     $refs[$node->getKey()] =& $node;
     // Updated node
     foreach ($oldDescendants as &$child) {
         $refs[$child->getKey()] = $child;
         $parent_id = $child->{$this->getTreeColumn('parent')};
         if (!empty($refs[$parent_id])) {
             if ($refs[$parent_id]->path != $refs[$child->getKey()]->removeLastNodeFromPath()) {
                 $refs[$child->getKey()]->level = $refs[$parent_id]->level + 1;
                 // New level
                 $refs[$child->getKey()]->path = $refs[$parent_id]->path . $child->getKey() . '/';
                 // New path
                 DB::table($this->getTable())->where($child->getKeyName(), '=', $child->getKey())->update([$this->getTreeColumn('level') => $refs[$child->getKey()]->level, $this->getTreeColumn('path') => $refs[$child->getKey()]->path]);
             }
         }
     }
     $this->fireModelEvent('updatedDescendants', false);
 }