2016-06-14 19 views
0

私は以下のようなフラットなデザインのシンプルなmysqlユーザテーブルを持っています。テーブルは、Group5、...、LibUser昇順で並べ替えられます。mysqlフラットデザインからPHPネストした配列

╔════════╤════════╤════════╤════════╤═══════════╗ 
║ Group5 │ Group4 │ Group3 │ Group2 │ LibUser ║ 
╠════════╪════════╪════════╪════════╪═══════════╣ 
║ G5_1 │ G4_1 │ G3_1 │ G2_1 │ LibUser_1 ║ 
╟────────┼────────┼────────┼────────┼───────────╢ 
║ G5_1 │ G4_1 │ G3_1 │ G2_1 │ LibUser_2 ║ 
╟────────┼────────┼────────┼────────┼───────────╢ 
║ G5_1 │ G4_1 │ G3_1 │ G2_1 │ LibUser_3 ║ 
╟────────┼────────┼────────┼────────┼───────────╢ 
║ G5_1 │ G4_1 │ G3_1 │ G2_2 │ LibUser_4 ║ 
╟────────┼────────┼────────┼────────┼───────────╢ 
║ G5_1 │ G4_1 │ G3_2 │ G2_3 │ LibUser_5 ║ 
╟────────┼────────┼────────┼────────┼───────────╢ 
║ .... │ .... │ .... │ .... │ ....  ║ 
╟────────┼────────┼────────┼────────┼───────────╢ 
║ G5_n │ G4_n │ G3_n │ G2_n │ LibUser_n ║ 
╚════════╧════════╧════════╧════════╧═══════════╝ 

このフラットデザインを階層的なネストされたツリーに変換したいと考えています。目的は、fancytree.jsを使用して表示することです。

親子を持つ最後のネストされた配列は、このようになります( "nbcpt"属性はブランチ内のユーザー数ですが、注意しないでください)。これは一例に過ぎず、上に示したmysqlテーブルとそのネストされた配列の間には正確なリンクはありません。

[ 
{"title": "All", "expanded": true, "folder": true, "nbcpt": 8, "children": [ 
    {"title": "G5_1", "folder": true, "nbcpt": 4, "children": [ 
     {"title": "G4_1", "nbcpt": 3, "folder": true, "children": [ 
      {"title": "G3_1", "folder": true, "nbcpt": 2, "children": [ 
        {"title": "LibUser_1", "nbcpt": ""}, 
        {"title": "LibUser_2", "nbcpt": ""} 
, 
       {"title": "G3_2", "folder": true, "nbcpt": 1, "children": [ 
        {"title": "LibUser_3", "nbcpt": ""} 
       ]} 
      ]} 
     ]}, 
     {"title": "G4_2", "folder": true, "nbcpt": 1,"children": [ 
      {"title": "G3_3", "folder": true, "nbcpt": 1, "children": [ 
       {"title": "LibUser_4", "nbcpt": ""} 
      ]} 
     ]} 
    ]}, 
     {"title": "G5_2", "folder": true, "nbcpt": 4, "children": [ 
     {"title": "G4_3", "folder": true, "nbcpt": 3, "children": [ 
      {"title": "G3_4", "folder": true, "nbcpt": 2, "children": [ 
        {"title": "LibUser_5", "nbcpt": ""}, 
        {"title": "LibUser_6", "nbcpt": ""}, 
       {"title": "G2_1", "nbcpt": 1, "children": [ 
        {"title": "LibUser_7", "nbcpt": ""} 
       ]} 
      ]} 
     ]}, 
     {"title": "G3_5", "folder": true, "nbcpt": 1, "children": [ 
      {"title": "G2_2", "folder": true, "nbcpt": 1, "children": [ 
       {"title": "LibUser_8", "nbcpt": ""} 
      ]} 
     ]} 
    ]} 
]} 
] 

データが階層構造で保存されている場合の例をいくつか読みますが、ここでは該当しません。

このフラットデザインをツリーに変換する方法はありますか? ありがとうございます。

答えて

0

一般に、postProcessコールバックを使用してソースデータを変換または変換できます。
The tutorialがあります。

これはまさにあなたの問題を解決し、最終的なコードはありませんが、あなたも、この要求からいくつかのアイデアを得ることができます: https://github.com/mar10/fancytree/issues/431

関連する問題