propel - Category Hierarchy Using Nested Set -


i trying create category hierarchy using nested sets in propel. don't particularly care left/right stuff, want able define hierarchy.

i having problems propel complaining root node exists given scope though looking existing root node? i'm new propel , nested set model i'm not sure i'm doing wrong.

my table schema:

<table name="category">     <column name="id" type="integer" primarykey="true" autoincrement="true"/>     <column name="name" type="varchar" size="250" required="true" primarystring="true"/>      <behavior name="nested_set">         <parameter name="use_scope" value="true"/>         <parameter name="scope_column" value="scope"/>         <parameter name="left_column" value="left" />         <parameter name="right_column" value="right"/>         <parameter name="level_column" value="level"/>     </behavior>      <foreign-key foreigntable="category" ondelete="cascade" onupdate="cascade">         <reference local="scope" foreign="id"/>     </foreign-key> </table> 

the function creating categories:

/**  * takes array of category names. first name taken   * root category , each name child of preceding  * name.  */ function createcategories(array $names) {     $categories = [];     $root = categoryquery::create()         ->filterbyname($names[0])         ->filterbylevel(0)         ->findoneorcreate();      if($root->isnew()) {         $root->save();         $root->setscopevalue($root->getid());     }      $categories[0] = $root;      foreach($names $level => $name) {         if($level == 0) {             continue;         }          $category = categoryquery::create()             ->filterbyname($name)             ->filterbyscope($root->getscopevalue())             ->findoneorcreate();          if($category->isnew()) {             $category->insertasfirstchildof($categories[$level - 1]);         }          $categories[$level] = $category;     }      return $categories; } 

the issue definition of root node. assumed root node defined 1 level 0. looking @ generated code in fact defines root 1 it's left value 1.

to correctly have node defined root can call:

$root->makeroot() 

this error goes away.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -