javascript - 从树形结构数据库生成 JSON

标签 javascript php zend-framework yii tree

我正在构建一个图库应用程序,我需要它采用树格式,我使用 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_父亲

产品: ID 姓名 价格 类别_id

请帮助我,>_<,我在我的项目中使用 MVC 结构,并且可以执行 foreach(modelinstance as model) 等操作...

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

最佳答案

这是我使用的功能,你需要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;

    }

关于javascript - 从树形结构数据库生成 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768210/

相关文章:

javascript - EPUB3 Reflowable-Fixed Layout 动态调整文本到 Div 的大小

php - 通过 url 传递 json 数组在 IE 中不起作用

PHP/MySQL where/order 子句不对数据进行排序

zend-framework - zend,如何将数据获取到布局或 View 而不每次都分配它

php - Zend Form 无法验证 float

javascript - 在 Vue.js 中监听 div 组件上的 "esc"按键事件

javascript - 清除之前的 JQuery 验证错误消息

javascript - 禁用 angularjs 中的表格行

php - 解释一个显示销量最高的 3 辆汽车的 MySQLi 查询

zend-framework - 如何在 Zend 框架中读取 application.ini 中的数组