使用Laravel,我在访问其他表时遇到了一些问题,这些表都是多对多的。
所以基本上,我从用户ID开始,并希望列出用户拥有的客户。
public function customers()
{
return $this->belongsToMany('Customer', 'user_to_customer');
}
这可行,假设我的用户ID为1:
User::find(1)->customers;
但是现在我想说,对于这些客户中的每一位,都要列出他们的产品。但是,这需要在同一个结果中。
我想我会在Customer模型中需要一些东西,例如:
public function products()
{
return $this->belongsToMany('Product', 'user_to_customer');
}
我似乎无法弄清楚如何在同一个查询中访问它?类似的东西:
User::find(1)->customers->products;
不确定..有什么建议吗?
答案 0 :(得分: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();