2013-12-16 40 views
0

使用Laravel,我在访问我的其他表格时遇到了一些麻烦,这些表格都是多对多的。雄辩多对多

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 {} 

下面的查询将返回所有产品属于属于特定客户(在这种情况下,第一)用户:

User::with(array('customers', 'customers.products'))->first(); 
+0

啊,谢谢,我从来没有真正理解渴望在此之前加载。作品款待,欢呼:) – Alias