基于sql查询创建JSON树结构

时间:2012-10-19 14:02:15

标签: php sql json zend-framework tree

我的数据库简化表格如下:
ImageContainer

Id Name 
=======
1  A  
2  B  
3  C  

图片

Id ParentId ImageData  
=====================
1  2        sthsth  
2  1        sthsth  
3  1        sthsth  

我需要从数据库中获取这些并创建树状结构(我有4个这些父子关系的表),然后将其编码为JSON。我正在使用PHP + Zend。到目前为止,我的解决方案是为每个表创建查询,将其编码为JSON,然后手动将子JSON插入父JSON。有没有更好的方法来做到这一点?

到目前为止,我试过

private function insertAsLastInJson($json, $name, $insert)
{
    if(strlen($json) < 2)
        return '{' . $insert . '}';
    $in = ",\"$name\":$insert";
    return substr($json, 0, strlen($json) - 1) . $in;
}

然后我像这样使用它:

$json = Zend_Json::encode($imageContainerRow); //$imageContainerRow contains single 'ImageContainer' row fetched from database
insertAsLastInJson($json, "images", $imagesRows); //$imagesRows contains multiple 'Images' rows fetched from database and encoded to JSON, separated by commas and everything is in beetween [ ].

示例JSON将是:

{"Id":1,"Name":"A","Images":[{"Id":2,"ParentId":1,"ImageData":"sthsth"},
{"Id":3,"ParentId":1,"ImageData":"sthsth"}]}

这需要一些括号插入,但总而言之,我得到了它的工作。有没有更好的方法呢?

0 个答案:

没有答案