我拥有一组组织及其董事会成员。 所有组织都有董事会成员,许多董事会成员都在多个组织的董事会中。通过相关实体正确递归
我使用JIT Hypertree来说明它们之间的关系。 JIT Hypertree模式要求一个项目是所有项目的父项目,并且基于单个JSON数组绘制。
我很想重新定位事件查询并根据更改重新填充图形。然后2级会很好,但我还没有能够解决如何做到这一点。
我目前使用的代码是从起始组织手动递归三个级别,但我想要的是重新诅咒所有相关记录。
所以它将从一个组织开始,并添加组织的孩子们(董事会成员)。然后为每个董事会成员提取所有董事会(当前组织除外),并将其添加为董事会成员的子女。
这样会持续下去,直到每条线索都死了 - 大概是只属于一个董事会的董事会成员。
任何人都有如何创建此数组,并避免重复的建议?
$board = $center->board();
$top['id'] = $center->ID;
$top['name'] = $center->Org;
$top['children'] = array();
if ($board) {
foreach ($board as $b) {
$child['id'] = $b->ID;
$child['name'] = (strlen(trim($b->Last)) > 0) ? $b->First . ' ' . $b->Last : 'Unknown';
$child['data']['orgname'] = $center->Org;
$child['data']['relation'] = $b->Role;
$child['data']['occupation'] = $b->Occupation;
$child['children'] = array();
$childboards = $b->boards();
if ($childboards) { foreach ($childboards as $cb) {
$gchild['id'] = $cb->ID;
$gchild['name'] = $cb->Org;
$gchild['data']['orgname'] = (strlen(trim($b->Last)) > 0) ? $b->First . ' ' . $b->Last : 'Unknown';
$gchild['children'] = array();
$childboardmembers = $cb->board();
if ($childboardmembers) { foreach ($childboardmembers as $cbm) {
$ggchild['id'] = $cbm->ID;
$ggchild['name'] = (strlen(trim($cbm->Last)) > 0) ? $cbm->First . ' ' . $cbm->Last : 'Unknown';
$ggchild['data']['orgname'] = $cb->Org;
$ggchild['data']['relation'] = $cbm->Role;
$ggchild['data']['occupation'] = $cbm->Occupation;
$ggchild['children'] = array();
$gchild['children'][]= $ggchild;
}}
$child['children'][]= $gchild;
}}
$top['children'][] = $child;
}
}
$top['data'] = array();
$top['data']['description'] = $center->Desc;
echo json_encode($top);
//编辑2011.10.24在Re hakre响应 我的数据结构组织的独特ID的表,通过唯一的ID人民一个表,然后两个组织指定一个桥接表(实体)和Person以及Person在实体中扮演的角色。一个典型的多对多。根本没有子板。我做了一个现在看来毫无意义的图像,但我会在底部添加它。
的JIT库数据结构是在一个小坚果(对我来说)它是这样在他们的乐队例如:
Top: Nine Inch Nails
Child: Jerome Dillon
Child: Howlin Maggie (another band)
{all the bands' members and then all of their bands...}
所以组织(带)进行处理,就好像它是一个人连尽管它由许多人组成。当我使用上面的代码递归时,我得到(我认为)可怕的膨胀,但它使JSON工作正常,尽管膨胀。
例JSON和Example Visualization //结束编辑
嗨hakre,感谢您的答复!我已经阐明了我的模式并对JIT库JSON的模式进行了评论。请看看它是否影响你的答案。谢谢! – jerrygarciuh