2017-06-13 96 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; 
    }); 
});