나는 단체와 이사회 멤버가 있습니다. 모든 조직에는 이사회 구성원이 있으며 많은 이사회 구성원은 둘 이상의 조직의 이사회에 있습니다.관련된 엔티티를 통해 적절하게 순환하기
나는 그 관계를 설명하기 위해 JIT Hypertree을 사용하고 있습니다. JIT Hypertree 스키마는 하나의 항목을 모두의 부모로 요구하며 단일 JSON 배열을 기반으로 그려집니다.
나는 리 센터링 이벤트 쿼리를 사용하고 변경을 기반으로 그래프를 다시 채우고 싶습니다. 그럼 2 레벨 괜찮을거야하지만 난 그렇게하는 방법을 해결할 수있게되지 않았습니다.
내가 현재 가지고있는 코드는 시작 조직에서 3 단계로 수동으로 반복되지만 원하는 것은 모든 관련 레코드를 통해 다시 저주하는 것입니다.
그래서 Org로 시작하여 Org의 자식 배열 (이사회 멤버)을 추가 할 것입니다. 그런 다음 각 게시판 구성원에 대한 모든 게시판 (현재 Org이 아닌)을 가져 와서 게시판 구성원의 자녀로 추가하십시오.
각 트레일이 끝날 때까지 계속됩니다. 아마도 한 보드에만 속한 보드 멤버 일 것입니다.
누구나이 배열을 만들고 중복을 피하는 방법에 대한 조언이 있으십니까?
hakre 응답 내 데이터 구조가 고유 ID와 조직의 테이블, 고유 ID를 가진 사람들의 테이블, 다음기구를 지정하는 두 브리징 테이블입니다 // 편집 2011년 10월 24일 재에서$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);
(엔티티)과 사람과 사람이 엔티티에서하는 역할. 일반적인 many-to-many. 서브 보드가 전혀 없습니다. 나는 그 이미지를 만들었지 만 지금은 무의미한 것처럼 보이지만 바닥에 그것을 추가 할 것이다.
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