/** * Filter the query to restrict the result to siblings of an object. * The result does not include the object passed as parameter. * * @param Especialidad $especialidad The object to use for sibling search * @param PropelPDO $con Connection to use. * * @return EspecialidadQuery The current query, for fluid interface */ public function siblingsOf($especialidad, PropelPDO $con = null) { if ($especialidad->isRoot()) { return $this->add(EspecialidadPeer::LEVEL_COL, '1<>1', Criteria::CUSTOM); } else { return $this->childrenOf($especialidad->getParent($con))->prune($especialidad); } }
/** * Moves current node and its subtree to be the next sibling of $sibling * The modifications in the current object and the tree are immediate * * @param Especialidad $sibling Propel object for sibling node * @param PropelPDO $con Connection to use. * * @return Especialidad The current Propel object */ public function moveToNextSiblingOf($sibling, PropelPDO $con = null) { if (!$this->isInTree()) { throw new PropelException('A Especialidad object must be already in the tree to be moved. Use the insertAsNextSiblingOf() instead.'); } if ($sibling->isRoot()) { throw new PropelException('Cannot move to next sibling of a root node.'); } if ($sibling->getScopeValue() != $this->getScopeValue()) { throw new PropelException('Moving nodes across trees is not supported'); } if ($sibling->isDescendantOf($this)) { throw new PropelException('Cannot move a node as sibling of one of its subtree nodes.'); } $this->moveSubtreeTo($sibling->getRightValue() + 1, $sibling->getLevel() - $this->getLevel(), $con); return $this; }