【问题标题】:Generate JSON from tree structured database从树状结构数据库生成 JSON
【发布时间】:2023-04-02 05:15:01
【问题描述】:

我正在构建一个画廊应用程序,我需要它采用树格式,我使用 jstree 扩展来构建它,我需要 json 采用这种格式:

$(function () {
    $("#demo1").jstree({ 
        "json_data" : {
            "data" : [
                { 
                    "data" : "A node", 
                    "metadata" : { id : 23 },
                    "children" : [ "Child 1", "A Child 2" ]
                },
                { 
                    "attr" : { "id" : "li.node.id1" }, 
                    "data" : { 
                        "title" : "Long format demo", 
                        "attr" : { "href" : "#" } 
                    } 
                }
            ]
        },
        "plugins" : [ "themes", "json_data", "ui" ]
    }).bind("select_node.jstree", function (e, data) { alert(data.rslt.obj.data("id")); });
});

我正在使用这个数据库:

分类: ID 姓名 id_father

产品: ID 姓名 价钱 category_id

请帮帮我,>_

帮助我真的需要它,但我不知道如何构建它

【问题讨论】:

    标签: javascript php zend-framework yii tree


    【解决方案1】:

    这是我使用的函数,不过你的模型中需要CNestedSetBehavior,我推荐这种设置分层数据的方式,因为它检索起来要快得多:

    protected function formatJstree(){
            $categories = $this->descendants()->findAll();
            $level=0;
            $parent = 0;
            $data = array();
            foreach( $categories as $n => $category )
            {
                $node = array(
                    'data'=> "{$category->title}",
                    'attr'=>array('id'=>"category_id_{$category->category_id}")
                );
                if($category->level == $level){
                    $data[$parent]["children"][] = $node;
                }
                else if($level != 0 && $category->level > $level){
                    if(!isset($data[$n]["children"])){
                        $data[$n]["children"] = array();
                    }
                    $data[$parent]["children"][] = $node;
                }
                else
                {
                    $data[] = $node;
                    $parent = $n;
                }
                $level=$category->level;
    
            }
            return $data;
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多