2017-05-20 1 views
1

3 개의 테이블이 연결되어 있습니다.웅변을 사용하여 두 번째 자식 테이블 데이터를 가져 오는 방법

packages(parent) -> routes(child) -> items(grandchild) 

내가이 조인을 사용하여 수행 할 수 있습니다 알고 있지만 우리가하는 일 laravel의 웅변을 사용하여 패키지의 ID로 모든 항목을 찾을 수있다 사용 웅변

+---------+   +-----------------------+  +---------------------+ 
|packages |   |   routes  |  |   items  | 
+---------+   +-----------------------+  +---------------------+ 
|id | name|   |id | package_id |name |  |id | route_id |name | 
| 1 | P1 |   | 1 |  1  | R1 |  | 1 |  1  | I1 | 
| 2 | P2 | -> | 2 |  1  | R2 | -> | 2 |  1  | I2 | 
| 3 | P3 |   | 3 |  2  | R3 |  | 3 |  2  | I3 | 
| 4 | P4 |   | 4 |  2  | R4 |  | 4 |  1  | I4 | 
| 5 | P5 |   | 5 |  3  | R5 |  | 5 |  3  | I5 | 
+---------+   +-----------------------+  +---------------------+ 

Pacakge 모델

경우 여기서 나는 이것을 받아 들여야한다.

class Package extends Model 
{ 
    public function items(){ 
    return $this->...; 
    } 
} 

결과 (이다 항목은 package_id와에 속하는 = 1)

+-----------------------+ 
|id | route_id | name | 
+-----------------------+ 
| 1 |  1  | I1 | 
| 2 |  1  | I2 | 
| 3 |  2  | I3 | 
| 4 |  1  | I4 | 
+-----------------------+ 

사전에 설득력

감사를 사용

답변

1

당신이 할 필요가 있다고 할 수있는 방법이있다 :

class Package extends Model 
{ 
    public function items() 
    { 
     return $this->hasManyThrough('App\Item', 'App\Route', 
            'package_id', 'route_id', 'id'); 
    } 
} 
+0

열 이름을 정의하는 방법 – User97798

+0

답변이 편집되었습니다 –

+0

당신은 정말 멋지다. – User97798