Example #1
0
 /**
  * Quick fix for problem when category node has its fk_parent_category_node set to itself
  *
  * @todo https://spryker.atlassian.net/browse/CD-575
  *
  * @return void
  */
 protected function removeCircularRelations()
 {
     $query = SpyCategoryNodeQuery::create();
     $query->innerJoinCategory()->useCategoryQuery()->innerJoinAttribute()->endUse()->orderByFkParentCategoryNode()->orderByNodeOrder('DESC')->where(SpyCategoryNodeTableMap::COL_FK_CATEGORY . ' = ' . SpyCategoryNodeTableMap::COL_FK_PARENT_CATEGORY_NODE)->_and()->where(SpyCategoryNodeTableMap::COL_IS_ROOT . ' = false');
     $badNodes = $query->find();
     foreach ($badNodes as $entityToMoveToRoot) {
         if ($entityToMoveToRoot->isRoot()) {
             continue;
         }
         printf("Removing circular referenced node: %s from [%d]<br/>\n", $entityToMoveToRoot->getCategory()->getAttributes()->getFirst()->getName(), $entityToMoveToRoot->getFkParentCategoryNode());
         $this->delete($entityToMoveToRoot->getIdCategoryNode());
         $query = SpyCategoryNodeQuery::create();
         $query->innerJoinCategory()->useCategoryQuery()->innerJoinAttribute()->endUse()->orderByFkParentCategoryNode()->orderByNodeOrder('DESC')->where(SpyCategoryNodeTableMap::COL_FK_PARENT_CATEGORY_NODE . ' = ?', $entityToMoveToRoot->getIdCategoryNode())->_and()->where(SpyCategoryNodeTableMap::COL_IS_ROOT . ' = false');
         $badChildrenToRemove = $query->find();
         foreach ($badChildrenToRemove as $badChild) {
             $this->delete($badChild->getIdCategoryNode());
             $badChild->delete();
         }
         $entityToMoveToRoot->delete();
     }
 }
 /**
  * @param null $modelAlias
  * @param \Propel\Runtime\ActiveQuery\Criteria|null $criteria
  *
  * @return \Orm\Zed\Category\Persistence\SpyCategoryNodeQuery
  */
 public function createCategoryNodeQuery($modelAlias = null, Criteria $criteria = null)
 {
     return SpyCategoryNodeQuery::create($modelAlias, $criteria);
 }