2014-11-09 3 views
0

세 개의 테이블이 있습니다.Eloquent ORM 다중 관계

users: 
- ... 
- some_param 

admins: 
- ... 
- club_id 
- some_param 

clubs: 
- id 
- title 

각 사용자 (some_param에 의해 관련) 여러 관리자를 가질 수, 각 관리자는 여러 클럽을 가질 수있다, 나는 각 클럽의 제목을 싶어.

class User extends Eloquent { 
    public function admins() { 
     return $this->hasMany('Admin', 'some_param', 'some_param'); 
    } 
} 

class Admin extends Eloquent {  
    public function clubs() { 
     $this->hasMany('Club', 'id', 'club_id'); 
    } 
} 

그리고 템플릿을 사용하려면 :

@foreach($user->admins as $admin) 
    @foreach($admin->clubs as $club) 
     {{ $club->title }} 
    @endforeach 
@endforeach 

하지만 오류를 받고 있어요 : 라인 @foreach($admin->clubs as $club)에서 Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation

그래서 나는 관계를 정의했다.

무엇이 잘못 되었나요? 미리 감사드립니다. 또한

public function clubs() { 
    return $this->hasMany('Club', 'id', 'club_id'); 
} 

$user 변수에 User 수집을 가져올 때, 위해, eager loading을 사용하려고 : 당신의 다음 함수에서

답변

0

: 당신은 return 그래서 이런 return을 사용하지 않은

public function clubs() { 
    $this->hasMany('Club', 'id', 'club_id'); 
} 

예 :

$user = User::with('admins.clubs')->find(1); 

이렇게하면 쿼리가 줄어 듭니다.