2013-12-16 3 views
0

Laravel을 사용하면 다른 많은 테이블에 액세스하는 데 어려움을 겪고 있습니다.Eloquent many-to-many

enter image description here

그래서 기본적으로, 사용자 ID로 시작하고 사용자가 가지고있는 고객을 나열합니다. 이 작품

public function customers() 
{ 
    return $this->belongsToMany('Customer', 'user_to_customer'); 
} 

내 사용자 ID가 1 인 가정

User::find(1)->customers; 

그러나 지금은 이러한 고객의 각각에 대해 말하고 싶은, 자신의 제품을 나열합니다. 그러나 이것은 동일한 결과 내에 있어야합니다. 나는 동일한 쿼리 내에서이 액세스하는 방법을 작동하지 수

public function products() 
{ 
    return $this->belongsToMany('Product', 'user_to_customer'); 
} 

:

가 나는 등 고객 모델 내에서 무언가를 필요 같아요? 다음과 같음 :

User::find(1)->customers->products; 

확실하지 않은 의견이 있습니까?

답변

1

이 동작을 수행하려면 eager loading을 살펴보십시오. 주어진 다음의 모델 관계 :

class User extends Eloquent { 

    public function customers() 
    { 
     return $this->has_many('Customer'); 
    } 

} 

class Customer extends Eloquent { 

    public function products() 
    { 
     return $this->has_many('Product'); 
    } 

} 

class Product extends Eloquent {} 

모든 제품이 (이 경우, 첫번째) 특정에 속하는 고객에 속하는 사용자를 반환합니다 다음 쿼리는 :

가 이
+0

아 덕분에, 나는 실제로 열망을 이해하지

User::with(array('customers', 'customers.products'))->first(); 
그 전에 로딩. 치료, 응원 :) – Alias