0

https://github.com/blt04/doctrine2-nestedsetを使用して階層データを管理しています。

次のデータベース構造で階層を管理します。

 categories
 -id
 -root
 -lft
 -rgt
 -name

以下のように、ノードをliタグでラップする必要があります。

 Vehicles
    Bikes
       Pulsor
       Hero Honda
    Automobiles
    Trucks

このバンドルには、ノードを操作するための次のメソッドが用意されています。

$tree=fetchTreeAsArray($nodeId);  //fetches tree for that node
$node->getNumberDescendants();    //returns all descendants for that node

メソッドの詳細については、https://github.com/cbsi/doctrine2-nestedset/blob/master/README.markdownをご覧ください。

liタグの周りにノードをラップしたい:

私はこれまでこれを試しました:

         $tree = $nsm->fetchTreeAsArray(8);
    $treeLiTags="<ul>";
    foreach ($tree as $node) {
        $treeLiTags.="<li>".$node;
        if ($node->hasChildren()) {
            echo $node->getNumberDescendants();
            $treeLiTags.="<ul>";
            $closeParent=true;
        }
        else {
            if ($closeParent && !$node->hasNextSibling()) {
                $closeParent=false;
                $treeLiTags.="</ul>";
            }
            $treeLiTags.="</li>";
        }
    }
    $treeLiTags.="</ul>";
    echo $treeLiTags;

これは次のように戻ります。

Vehicles
    Bikes
       Pulsor
       Hero Honda
          250 cc
       Automobiles
       Trucks

私は得るべきです:

Vehicles
   Bikes
      Pulsor
      Hero Honda
         250 cc
   Automobiles
   Trucks

どんなアルゴリズムが役に立ちますか?

4

1 に答える 1