我从数据库中简化的表如下:
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"}]}
这需要插入一些括号,但总而言之,我让它工作了。有没有更好的方法来做到这一点?