2017-02-08 54 views
0

我使用的是Larvel 5.3,我有四个表,我希望与之建立关系。如何设置laravel关系

- Users 
- Orders 

- Products 
- Brands 

订单属于用户,用户有很多订单。 产品属于多个订单,另外属于一个品牌。 一个品牌有很多产品。

我试图找到一种方法来获取用户的订单,产品和产品的品牌。

user.php的

public function orders(){ 
    return $this->hasMany('App\Order'); 
} 

Order.php

public function user() { 
    return $this->belongsTo('App\User'); 
} 
public function products(){ 
    return $this->hasMany('App\Product'); 
} 

Product.php

public function orders() { 
    return $this->belongsToMany('App\Orders'); 
} 
public function brand(){ 
    return $this->belongsTo('App\Brand'); 
} 

Brand.php

public function products() { 
    return $this->hasMany('App\Flavour'); 
} 

我希望找回包含用户订单的数组,以及每个订单产品和产品的品牌。

任何人都可以建议吗?

回答

1

首先,产品和订单有多对多的关系。

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

先获取用户的订单。由于用户有很多订单,因此您需要指定要从哪个订单查看产品列表。

$order = $user->orders->first(); 

然后让所有的产品和自己的品牌

foreach($order->products) ... 

对于你的超级数组,你可以尝试预先加载

$arr = User::with('orders.products.brand')->get(); //Not tested