2014-12-28 10 views
1

여러 개의 여러 조인이있는 테이블 구조가 있습니다.Eloquent를 사용하여 여러 수준의 많은 어린이에 액세스하십시오.

nodes -<node_template>- templates -<placeholder_template>- placeholder 

내가 belongsToMany 방법과 내 노드, 템플릿, 및 자리 표시 자 모델 설정이 조인 테이블을 통해 주요 테이블을 연결해야합니다.

웅변을 사용하여 여러 수준의 하위 노드를 선택하는 방법이 있습니까?

즉, 특정 node 레코드를 쿼리하고 template 자식 레코드와 템플릿의 placeholder 레코드를 얻을 수있는 방법이 있습니까? 뭔가 같이 :

public function byFileMakerIdWithTemplates($id){ 
    return $this->node->with('templates')->with('placeholders')->where('internal_id', '=', $id)->firstOrFail(); 
} 

나는 내가 템플릿을 그것 모두의 노드를 것 찾기 위해 데이터 JOIN 절을 사용하거나 코드를 작성을 모두 잡아해야 당신에게 MySQL의 쿼리를 작성하는 DB 외관을 사용할 수 있습니다 알고 각 템플릿을 통해 foreach를 수행하여 자리 표시자를 찾으십시오. 그러나 다차원 배열에서 모든 것을 깨끗하게 잡을 수있는 방법이 있다면 환상적 일 것입니다.

답변

0

당신은 . 도트 구문을 사용하여 열망로드 중첩 관계 수 있습니다

with('relationA.relationB'); 

그래서 당신은 작성합니다 작업을했다

public function byFileMakerIdWithTemplates($id){ 
    return $this->node->with('templates.placeholders')->where('internal_id', '=', $id)->firstOrFail(); 
} 
+0

완벽. 올바른 방향으로 주셔서 감사합니다! –

+0

안녕하세요, 작은 도움이 필요합니다. http://chat.stackoverflow.com/rooms/67732/discussion-between-biz-dev-b-and-lukasgeiter 지금이 댓글을 삭제합니다. –

+1

@lukasgeiter 너는 ' 이 경우에 중첩의 각 레벨을 개별적으로 지정해야하므로 간단히'with ('relation.nested.anotherLevel')'을 지정해야합니다. –

관련 문제