2017-06-13 114 views
0

间接的关系,我有:获取从集合

User->hasMany('Order') 

...

Order->hasMany('Product') 

...

$users=User::with('orders','orders.product')->... 

我怎么可以检索所有的产品在$用户用户买利用急切的加载而不是做其他查询?

回答

0

您可以在用户模型上使用hasManyThrough关系。

https://laravel.com/docs/5.4/eloquent-relationships#has-many-through

public function products() 
{ 
    return $this->hasManyThrough('App\Product', 'App\Order'); 
} 

,或者使用集合,如您已预先加载。

$products = User::with('orders','orders.product')->flatMap(function(User $user) { 
    return $user->orders->flatMap(function(Order $order) { 
     return $order->products; 
    }); 
});