我有:
User->hasMany('Order')
...
Order->hasMany('Product')
...
$users=User::with('orders','orders.product')->...
如何利用急切加载而不是进行其他查询来检索$ users中用户购买的所有产品?
答案 0 :(得分: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;
});
});